Firefox addon 如何在中使用contentscript访问附加到网页的变量-使用加载项生成器访问contentscript
我使用插件生成器创建了一个插件。我在Firefox addon 如何在中使用contentscript访问附加到网页的变量-使用加载项生成器访问contentscript,firefox-addon,firefox-addon-sdk,content-script,Firefox Addon,Firefox Addon Sdk,Content Script,我使用插件生成器创建了一个插件。我在main.js 我的内容脚本统计使用document.createElement()创建的动态标记的数量。这是通过创建document.createElement()的钩子实现的,并通过创建脚本标记将此函数添加到网页中。我的代码如下 contentscriptFile: addJS_节点(“var count=0;”); 函数LogDocCreateElement() { var oldDocumentCreateElement=document.create
main.js
我的内容脚本统计使用document.createElement()
创建的动态标记的数量。这是通过创建document.createElement()的钩子实现的,并通过创建脚本标记将此函数添加到网页中。我的代码如下
contentscriptFile:
addJS_节点(“var count=0;”);
函数LogDocCreateElement()
{
var oldDocumentCreateElement=document.createElement;
document.createElement=函数(标记名)
{
var elem=oldDocumentCreateElement.apply(文档、参数);
log(“动态创建一个(n)”,标记名);
计数++;
返回元素;
}
}
addJS_节点(null,null,LogDocCreateElement);
函数addJS_节点(文本、s_URL、函数名){
var D=文件;
var scriptNode=D.createElement('script');
scriptNode.type=“text/javascript”;
如果(text)scriptNode.textContent=text;
如果(s_URL)scriptNode.src=s_URL;
if(funcToRun)scriptNode.textContent='('+funcToRun.toString()+')()';
var targ=D.getElementsByTagName('head')[0]| | D.body | | D.documentElement;
target.appendChild(脚本节点);
}
addEventListener(“加载”,函数(){alert(count)},false);
现在我得到了未捕获的异常:ReferenceError:count未定义
如何访问此count
变量?请参见内容脚本如何访问网页-它们看不到网页添加到DOM中的任何自定义属性和方法。在您的情况下,您需要通过unsafeWindow
对象访问count
变量:
unsafeWindow.count++;
但是,如文档所述,如果可能,您应该避免使用unsafeWindow
。这里显而易见的做法是避免在页面中创建count
变量。因此,与此相反:
addJS_节点(“var count=0;”);
您只需声明变量:
var计数=0;
但是您需要替换unsafeWindow.document.createElement
,而不是document.createElement
,以便此更改对网页可见。避免unsafeWindow
这里会更加复杂,也许您可以改用它?请查看内容脚本如何访问网页-它们看不到网页添加到DOM中的任何自定义属性和方法。在您的情况下,您需要通过unsafeWindow
对象访问count
变量:
unsafeWindow.count++;
但是,如文档所述,如果可能,您应该避免使用unsafeWindow
。这里显而易见的做法是避免在页面中创建count
变量。因此,与此相反:
addJS_节点(“var count=0;”);
您只需声明变量:
var计数=0;
但是您需要替换
unsafeWindow.document.createElement
,而不是document.createElement
,以便此更改对网页可见。避免unsafeWindow
这里会更加复杂,也许你可以改用它?但是如果我声明为var count=0
@user1335906:这是正确的-你的文档。createElement
函数永远不会被调用,因为网页没有看到它。请参阅我答案的最后一段。我应该在哪里更改document.createElement,无论是在LogDocCreateElement()
还是addJSNOde()
中,对不起,我没有收到您可以指定我应该在哪里修改包含的unsafeWindow.count++代码>在我的代码中,但我得到“未定义unsafeWindow”错误。如何解决此问题?如果我声明为var count=0
@user1335906,则警报将显示0:这是正确的-您的文档。createElement
函数从未调用,因为网页没有看到它。请参阅我答案的最后一段。我应该在哪里更改document.createElement,无论是在LogDocCreateElement()
还是addJSNOde()
中,对不起,我没有收到您可以指定我应该在哪里修改包含的unsafeWindow.count++代码>在我的代码中,但我得到“未定义unsafeWindow”错误。我该如何解决这个问题