【发布时间】:2016-08-03 19:40:14
【问题描述】:
按照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 的浏览器编辑器,有人可以帮我解决这个问题吗?
【问题讨论】:
-
我不清楚什么是坏的,我们有这样的例子 (builder.addons.mozilla.org/addon/1065275/latest) 在内容脚本中使用 self.port 时工作正常。
-
@canuckistani 我复制了您的代码,并更改了 main.js 中的第 14 行,您忘记了 worker.on 中的端口,它可以正常工作。但是当我拉 Firebug 并输入 self.port.emit('from-content-script','test123') 我仍然得到 self.port is undefined 错误,这个功能是否只能在有限的时间内使用?在我的代码中,我们只有在 DOM 准备好时才让 jQuery 调用该函数,也许当 DOM 准备好时 self.port 已经“消失”了?
-
'self.port.on' 只存在于内容脚本的单独范围内,绝对没有定义在主页面范围内。有关内容脚本的更多信息,请参阅文档:addons.mozilla.org/en-US/developers/docs/sdk/1.8/dev-guide/…
标签: firefox-addon firefox-addon-sdk