按照this指南,我做了一点变化,我一直收到此错误:
self.port未定义 在base.js [我的内容代码]
这是我的附加代码:
PageMod({
include: [data.url('base.html')],
contentScriptWhen: 'start',
contentScriptFile: [data.url('jquery-1.7.2.min.js'),data.url('jquery-ui-1.8.21.custom.min.js'),data.url('base.js')],
contentStyleFile: [data.url('css/mint-choc/jquery-ui-1.8.21.custom.css'),data.url('css/base.css')],
onAttach: function(worker) {
worker.port.on("request", function(txt) {
console.log(txt);
worker.port.emit("response","response for "+txt);
});
}
});
和我的内容代码:
// initialized by jQuery
$(function() {
self.port.on("response",function(txt){console.log("response "+txt);}) //this line is where the error point to.
$('#tabs').tabs();
testLoadLinks();
});
function testReceiveRequest(request) {
console.log('received:',request);
self.port.emit("request",request);
}
我正在使用SDK版本1.8的浏览器编辑器,有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
经过一些测试和调试后,我发现了我的两个错误,对不起,我没有把整个代码放进去,因为我觉得它没有关系:
我在 base.html
中有这个<link type="text/css" href="css/mint-choc/jquery-ui-1.8.21.custom.css" rel="stylesheet" />
<link type="text/css" href="css/base.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.21.custom.min.js"></script>
<script type="text/javascript" src="js/base.js"></script>
和 main.js
PageMod({
include: [data.url("base.html")],
contentScriptWhen: 'start',
contentScriptFile: [data.url('jquery-1.7.2.min.js'),data.url('jquery-ui-1.8.21.custom.min.js'),data.url('base.js')],
contentStyleFile: [data.url('css/mint-choc/jquery-ui-1.8.21.custom.css'),data.url('css/base.css')],
onAttach: function(worker) {
console.log("attaching...")
worker.port.on("request", function(txt) {
console.log(txt);
worker.port.emit("response","response for "+txt);
});
}
});
我的脚本位于/ data / js /文件夹中,找不到它们因此没有在main.js中加载脚本的pageMod部分,但它们是由内部脚本本身在DOM中加载的,其中self.port未定义。我刚从base.html中删除了脚本和样式标记,因为它们已经在pageMod中,并修复了data.url('js / base.js')和其他的路径。现在我了解了附加范围中的脚本可以访问DOM范围并进行更改,但DOM内的脚本不能(它们可以?)与附加范围进行通信。如果您希望脚本与加载项进行交互,则应将它们保留在加载项范围内。我希望帮助那些犯同样错误的人。 谢谢canuckistani。