我正在开发一个firefox扩展,我在myPanel的contentScriptFile中有这些函数:
...
function myFun(param){
console.log("myFun with "+param)
}
self.port.on('myTrigger',function(value){
$("#myFavDiv").append("<a onclick='myFun(\'"+value+"\')'> click me!</a>")
});
...
我包含的脚本文件如(main.js
):
myPanel = panel.Panel({
width: 400,
height: 200,
contentURL: self.data.url("panel.html"),
contentScriptFile: [self.data.url("jquery-1.10.2.min.js") , self.data.url("mScript.js")]
});
一切正常,只有问题是onclick
方法,在div#myFavDiv
单击锚点时抛出错误:
Timestamp: 8/10/2013 1:24:48 AM
Error: ReferenceError: myFun is not defined
我尝试在myFun
中编写此main.js
函数,但仍存在同样的错误。
任何想法/解决方案?
答案 0 :(得分:2)
我认为内容脚本是从HTML沙箱化的,因此当锚注入HTML时,它不知道myFun
是什么。在您的内容脚本中,您可以将处理程序绑定在那里,并将其保持在同一环境中。
self.port.on('myTrigger',function(value){
$("#myFavDiv").append("<a onclick='myFun(\'"+value+"\')'> click me!</a>")
$("#myFaDiv a").click(myFun);
});