2016-01-12 2 views
0

В моем аддоне используется сценарий содержимого для взаимодействия со страницей. Но ему также нужен доступ к javascript страницы, чтобы он мог запускать одну из подпрограмм страницы. Поэтому для моего скрипта содержимого требуется доступ к контексту сценария страницы.Как получить доступ к контексту сценария страницы

Вот что я имею в виду.

Аддон использует main.js, которые обращаются к content.js и используют обмен сообщениями для связи.

Но веб-страница (в которую вводится контент.js) имеет свой собственный javascript. Мой content.js нуждается в доступе к этому контексту, чтобы он мог получать значения из переменных там.

Как это можно получить?

У меня есть been reading these mdn docs, но похоже, что они говорят о странице html, которую вы кодируете сами, как и для страницы настроек. Но в моем случае я работаю с внешним веб-сайтом, а не с кодировкой только для аддона.

ответ

0

Подход listed on the MDN page также работает для внешних страниц, а не только для ваших собственных.

I.e. unsafeWindow.myPageVar будет работать.

0

Это работает:

var script = document.createElement("script"); 
script.innerHTML = "alert(myPageVar);"; 
document.body.appendChild(script); 

Credit goes to this fellow.

Я не знаю, действительно ли это лучший способ сделать это. Надеюсь, что кто-то другой, более осведомленный, чем я, ответит.

Вот как вернуть значение:

var retval = unsafeWindow.SomePageFunction(); 
alert(retval); 

Это называется «небезопасно», потому что вы никогда не знаете, что о странице может быть изменен или может измениться. Вот как это делается при добавлении interacts with page scripts.