我正在尝试创建一个使用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。
答案 0 :(得分:0)
您无法从内容脚本访问data.url,您只能从main.js执行此操作。您可以在contentScriptOptions中从main传递脚本的文件路径和名称。
此外,我不确定您打算如何使用此功能,但如果您执行include: ["https://www.google.com"]
,则page-mod仅适用于https://www.google.com。 include: "[*]"
允许所有网站等。