我正在开发一个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函数,仍然存在相同的错误。

任何想法/解决方案?

最佳答案

我认为内容脚本是从HTML沙盒中提取的,因此当将锚点注入HTML时,它不知道myFun是什么。在您的内容脚本中,您可以在此处绑定处理程序,将其保持在同一环境中。

self.port.on('myTrigger',function(value){
    $("#myFavDiv").append("<a onclick='myFun(\'"+value+"\')'> click me!</a>")
    $("#myFaDiv a").click(myFun);
});

07-24 17:53