Сопоставление и замена слова при загрузке страницы - PullRequest
1 голос
/ 02 февраля 2012

У меня есть этот код, который должен запускаться при запуске моего аддона, должен искать слово и затем заменять его другой работой, если он его находит.

var contents=document.body.innerHTML;
var idx=contents.search("hello");
if(idx) {
    contents=contents.replace("hey",'<span id="highlight">hey</span>');
    document.body.innerHTML=contents;
    document.getElementById('highlight').scrollIntoView();
};

Но я продолжаю получать сообщение об ошибке на консоли

Traceback (most recent call last):
File "resource://jid1-qntppxcxwbpwlw-at-jetpack/lib/main.js", line 5, in 
var contents=document.body.innerHTML;
ReferenceError: document is not defined

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

Судя по сообщению об ошибке вы используете Add-on SDK. Ваш main.js модуль работает в отдельном контексте - он не привязан ни к какому окну или документу. Таким образом, переменная document не определена, конечно.

Вы, очевидно, хотите изменить содержимое веб-страниц - вот для чего нужны скрипты содержимого . Вы либо используете page-mod (он будет запускать скрипт содержимого для всех открываемых новых страниц), либо вы используете tab.attach() для запуска сценария содержимого для существующих вкладок.

0 голосов
/ 02 февраля 2012

Документ не готов к выполнению кода. Внутри вашего тега body вы должны поместить onload='ready();' (или как хотите, чтобы вызывать свою функцию), а затем определить function ready() { } в своем скрипте с кодом, который вы написали внутри этой функции.

...