我开始为firefox开发插件,我遇到了问题。
var tabs = require('sdk/tabs');
tabs.on('ready', function (tab) {
tab.attach({
contentScript: "alert('azaza');",
onMessage: function(message) {
console.log("message");
}
});
})
当我尝试在Firefox中每晚尝试执行此代码时,它会说" TypeError:window为null",但是在Nightly 32中它运行正常!在最后的fierfox(不是每晚)这段代码也不起作用。
我试图在夜间浏览器调试器控制台中执行此代码,但结果相同(窗口为空)。
我可以看到,在sdk / tabs / utils.js中,browser.contentWindow为null。我认为这是我的窗口对象,但为什么它是null?
答案 0 :(得分:0)
我能够使用以下代码重现此问题:
var { ActionButton } = require("sdk/ui/button/action");
var self = require("sdk/self");
var tabs = require('sdk/tabs');
var button = ActionButton({
icon: self.data.url("icon-16.png"),
id: "my-button",
label: "my button",
onClick: function() {
tabs.open({
url: self.data.url("text-entry.html")
});
tabs.activeTab.attach({
contentScript: "alert('azaza');"
});
}
});
要解决此问题,我必须使用onOpen
而不是activeTab
:
var button = ActionButton({
icon: self.data.url("icon-16.png"),
id: "my-button",
label: "my button",
onClick: function() {
tabs.open({
url: self.data.url("text-entry.html"),
onOpen: function() {
tabs.activeTab.attach({
contentScript: "alert('azaza');"
});
}
});
}
});
如果您不能使用attach
方法,可能还在使用它?