Как я выполняю определенную страницей функцию JavaScript от расширения Firefox?

[g4] The! Символ показывает, что это выражение, вызываемое немедленно. [/g4] [g5] Восклицательный знак не будет вызывать функцию в одиночку; Вы можете поставить () в конце: [/g5] [g6] [g0] [f1] [/g0] () имеет более высокий приоритет, чем! и мгновенно вызывает функцию. [/g6] [g7] Вы также можете упомянуть это следующим образом: [/g7] [g8] [g2] [f2] [/g2] [/g8] [g9] The! позволяет выражению возвращать true. Это связано с тем, что по умолчанию все сразу вызываемые выражения функции возвращают неопределенное значение, поэтому мы остались с! не определено, что правда. [/g9]
9
задан Jason Bunting 30 September 2008 в 02:43
поделиться

4 ответа

Это из соображений безопасности, что у Вас есть ограниченный доступ к странице содержания от расширения. Посмотрите XPCNativeWrapper и Безопасно доступ к содержанию DOM от хрома,

При управлении страницей лучший способ сделать, это настраивается слушатель события на странице, и диспетчеризируйте событие от расширения (addEventListener на странице, dispatchEvent в расширении).

Иначе см. http://groups.google.com/group/mozilla.dev.extensions/msg/bdf1de5fb305d365

8
ответ дан 4 December 2019 в 13:51
поделиться

Можно сделать это, но необходимо управлять страницей и смочь повысить уровень полномочий для сценария. Документация Mozilla дает пример - ищут "Полномочие" на странице.

0
ответ дан 4 December 2019 в 13:51
поделиться
document.wrappedJSObject.funcToBeCalled();

Это небезопасно и позволяет вредоносной странице повысить свои разрешения до разрешений вашего расширения. ... Но он делает то, о чем вы просили. Прочтите о ранних уязвимостях greasemonkey , чтобы понять, почему это плохая идея.

6
ответ дан 4 December 2019 в 13:51
поделиться

У меня есть очень простой способ сделать это. Предположим, вам нужно вызвать функцию xyz (), которая написана на странице. и вы должны вызвать его из своего плагина.

создайте кнопку («сделайте ее невидимой. Чтобы она не мешала вашей странице»). при нажатии этой кнопки вызовите эту функцию xyz ().

<input type="button" id="testbutton" onclick="xyz()" />

Теперь в плагине у вас есть объект документа для страницы. предположим, что его mainDoc

, в котором вы хотите вызвать xyz (), просто выполните эту строку

mainDoc.getElementById('testbutton').click();

, она вызовет функцию xyz ().

удачи :)

1
ответ дан 4 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: