在Firefox扩展中的contentScriptFile中创建新函数

时间:2013-08-09 20:00:07

标签: javascript jquery firefox firefox-addon firefox-addon-sdk

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

任何想法/解决方案?

1 个答案:

答案 0 :(得分:2)

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

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