Я постараюсь объяснить как можно более кратко.
Я разработал расширение Chrome, и у меня возникли проблемы с некоторыми функциями.
Проблема, с которой я столкнулся, заключается в том, что Мне нужно инициировать некоторые события на веб-сайте, к которому у расширения есть доступ, но некоторые скрипты, работающие на консоли, не работают так же, если выполняются из моего содержимого js расширения Chrome (даже если я использую мой собственная версия jQuery, которую я могу добавить к своему расширению при необходимости).
Пример:
Если я выполню window.$
или jQuery на консоли, она вернет ƒ (a,b){return new n.fn.init(a,b)}
. Если я запускаю это в моем сценарии, даже если я жду, пока все загрузится, даже если я установлю ожидание в 10 секунд, прежде чем проверять, чтобы убедиться, что все загружено, это говорит мне, что «$ is undefined», когда у меня нет jQuery на моем Chrome расширении.
Кроме того, console.log(window.$.fn)
, выполненный из консоли, возвращает Object [jquery: "1.12.4", selector: "", constructor: ƒ, toArray: ƒ, get: ƒ, …]
, но если я запускаю его из моего скрипта содержимого, активированного jQuery, возвращается Object [jquery: "3.5.0", constructor: ƒ, toArray: ƒ, get: ƒ, pushStack: ƒ, …]
, так как у меня есть эта версия установлена на расширение.
Мне нужно сделать это (который работает с консоли, но не из сценария содержимого расширения):
$("#id").val(123).val());
$("#id").trigger('keyup');
Я также пробовал родной .dispatchEvent()
способ сделать это, но ничего не происходит, он возвращает true
при выполнении, но ничего не происходит.
Вот почему я спрашиваю: есть ли способ получить доступ к экземпляру jQuery страницы из внешний файл (в данном случае мой content.js
скрипт с расширением chrome)?
Я могу изменить DOM, но этого недостаточно, даже если я по какой-то причине изменил значение входов формы страница делает не признать изменения. Единственный работающий способ, который я нашел, - это запуск вручную события keyup
после изменения значения с помощью jQuery, но работает, только если я делаю это с консоли.
Есть подсказка?