Im работает над расширением FireFox, которое прослушивает OnStateChange. Когда текущий документ был загружен, он должен вставить скрипт на страницу, и он должен иметь возможность вызывать скрипт на событие кнопки.Расширение Firefox: Добавить javascript на веб-страницу
Теперь я могу добавить кнопку для всех веб-страниц с помощью:
nsCOMPtr<nsIDOMElement> NewInputElementTest;
rv = htmlDoc->CreateElement(NS_LITERAL_STRING("input"),getter_AddRefs(NewInputElementTest));
rv = NewInputElementTest->SetAttribute(NS_LITERAL_STRING("type"),NS_LITERAL_STRING("button"));
rv = NewInputElementTest->SetAttribute(NS_LITERAL_STRING("value"),NS_LITERAL_STRING("hummer"));
rv = body->AppendChild(NewInputElementTest,getter_AddRefs(AddedNewInputElement2));
The button is displayed correctly.
I wish to use the same procedure to add a SCRIPT to the page, like so:
rv = htmlDoc->CreateElement(NS_LITERAL_STRING("script"),getter_AddRefs(NewInputElement));
rv = NewInputElement->SetAttribute(NS_LITERAL_STRING("type"),NS_LITERAL_STRING("text/javascript"));
rv = NewInputElement->SetAttribute(NS_LITERAL_STRING("text"),NS_LITERAL_STRING("alert('hello world!')"));
rv = body->AppendChild(NewInputElement,getter_AddRefs(AddedNewInputElement));
Все функции возвращают успех, но ни один скрипт не будет добавлен на страницу. Предупреждение не отображается, и если я вставляю функцию и вызываю ее из кнопки button.onclick, тогда журнал FireFox показывает, что функция недоступна.
Если я использую ту же самую процедуру из javascript внутри html-страницы, то она работает, и появляется предупреждение.
Нужно ли мне что-либо делать, чтобы включить сценарий из моего расширения или почему сценарий недоступен с помощью кнопки или где-либо еще?
Благодаря
возможно дубликат [Как внедрить JavaScript в страницу, с Firefox, дополнения, и запустить его?] (Http://stackoverflow.com/questions/2879669/how-to-inject-javascript- in-page-from-a-firefox-add-on-and-run-it) – user2284570