每当页面加载时匹配和替换单词

时间:2012-02-02 19:41:17

标签: firefox firefox-addon firefox-addon-sdk

我的代码需要在我的插件启动时运行,需要查找单词,然后在找到它时用不同的工作替换它。

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 个答案:

答案 0 :(得分:2)

根据您使用附加SDK的错误消息判断。您的main.js模块在​​单独的上下文中运行 - 它不会附加到任何窗口或文档。因此,变量document当然没有定义。

您显然想要更改网页的内容 - 这就是content scripts的用途。您可以使用page-mod(它将为正在打开的所有新页面运行内容脚本),也可以使用tab.attach()为现有选项卡运行内容脚本。

答案 1 :(得分:0)

运行代码时文档未就绪。在body标记内,您需要放置onload='ready();'(或者您想要调用函数的任何内容),然后使用您在该函数中编写的代码在脚本中定义function ready() { }