Referenceerror:数据未定义

时间:2014-10-11 19:32:33

标签: firefox sdk

我正在尝试创建一个使用contentscript在某个页面中注入.js文件的firefox插件。大部分都有效,但我不断收到这个奇怪的错误。

main.js

var pageMod = require("sdk/page-mod");
var self = require("sdk/self");
var data = require('sdk/self').data;

pageMod.PageMod({
  include: ["http://www.google.com",
            "https://ww.google.com"
           ],
  contentScriptFile: data.url("contentscript.js")
});

contentscript.js

var s = document.createElement('script');
s.src = data.url('jquery.js');
s.onload = function() {
    this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);

setTimeout(function(){
  var d = document.createElement('script');
  d.src = data.url('script.js');
  d.onload = function() {
      this.parentNode.removeChild(this);
  };
  (document.head||document.documentElement).appendChild(d);
},100)

script.js的内容是无关紧要的,因为它甚至没有被执行。错误在contentcript中:2:1 Referenceerror:数据未定义。

请记住,需要以这种方式完成,脚本需要能够修改DOM。

1 个答案:

答案 0 :(得分:0)

您无法从内容脚本访问data.url,您只能从main.js执行此操作。您可以在contentScriptOptions中从main传递脚本的文件路径和名称。

此外,我不确定您打算如何使用此功能,但如果您执行include: ["https://www.google.com"],则page-mod仅适用于https://www.google.cominclude: "[*]"允许所有网站等。