Это из соображений безопасности, что у Вас есть ограниченный доступ к странице содержания от расширения. Посмотрите XPCNativeWrapper и Безопасно доступ к содержанию DOM от хрома,
При управлении страницей лучший способ сделать, это настраивается слушатель события на странице, и диспетчеризируйте событие от расширения (addEventListener на странице, dispatchEvent в расширении).
Иначе см. http://groups.google.com/group/mozilla.dev.extensions/msg/bdf1de5fb305d365
Можно сделать это, но необходимо управлять страницей и смочь повысить уровень полномочий для сценария. Документация Mozilla дает пример - ищут "Полномочие" на странице.
document.wrappedJSObject.funcToBeCalled();
Это небезопасно и позволяет вредоносной странице повысить свои разрешения до разрешений вашего расширения. ... Но он делает то, о чем вы просили. Прочтите о ранних уязвимостях greasemonkey , чтобы понять, почему это плохая идея.
У меня есть очень простой способ сделать это. Предположим, вам нужно вызвать функцию xyz (), которая написана на странице. и вы должны вызвать его из своего плагина.
создайте кнопку («сделайте ее невидимой. Чтобы она не мешала вашей странице»). при нажатии этой кнопки вызовите эту функцию xyz ().
<input type="button" id="testbutton" onclick="xyz()" />
Теперь в плагине у вас есть объект документа для страницы. предположим, что его mainDoc
, в котором вы хотите вызвать xyz (), просто выполните эту строку
mainDoc.getElementById('testbutton').click();
, она вызовет функцию xyz ().
удачи :)