Я пишу расширение Safari, которое добавляет некоторые функции к веб-странице, которой у меня нет. Я хотел бы, чтобы на моей странице JavaScript с JavaScript появилась возможность запускать некоторые функции JavaScript, которые использует страница хоста, но она не работает. На консоли я получаю сообщение ReferenceError: Can't find variable: function_name
.Выполнение хост-скрипта с введенной страницы
Мой скрипт указан как конечный сценарий, поэтому необходимо загрузить всю страницу. Эта функция также вызывается из обработчика onclick()
на странице, например, так:
onclick="function_name($(this).up());"
я могу получить ссылку на эту страницу элемент, но когда я называю element.onclick()
я получаю другую ошибку: TypeError: 'undefined' is not a function (evaluating '$(this).up()')
.
Как ни странно, когда я вызываю функцию JavaScript из AppleScript (do JavaScript "function_name()" in page
), он отлично работает. Как я могу вызвать эти функции?
У меня есть какой-либо способ общения с вставленным сценария? Это полезная информация и объясняет, что происходит, но мне бы очень понравилось. – Dov
Вы можете использовать DOM для своего рода обмена между вложенным скриптом (расширением) и вставленным скриптом. Если вы хотите передать значение из вставленного сценария в инъецированный скрипт или наоборот, первый скрипт мог бы установить атрибут для элемента в документе, используя element.setAttribute(), а в какой-то момент второй скрипт мог бы прочитать он использует element.getAttribute(). Например, вы можете использовать: document.documentElement.setAttribute ('my_attr', '999') , а затем для получения значения: document.documentElement.getAttribute ('my_attr') – canisbos
Но она должна была бы опроса на некотором интервале? – Dov