我在Crossrider扩展和Firefox中遇到一个非常简单的弹出代码问题(在35.0.1和25.0.1上测试但我很确定在其他版本上也是如此)。
这是extension.js
appAPI.ready(function($) {
randNumber = Math.floor((Math.random() * 1000) + 1);
appAPI.message.toBackground({
msgRand: randNumber
});
});
这是background.js
appAPI.ready(function($) {
appAPI.message.addListener(function(msg) {
randomNumber = msg.msgRand;
appAPI.browserAction.setResourceIcon('icon.png');
appAPI.browserAction.setPopup({
html: '<h1>' + randomNumber + '</h1>',
height: 300,
width: 300
});
});
});
上面的代码应该显示1到1000之间的随机数,但它只在第一次点击按钮时起作用,从那时起它就会一直显示相同的数字,无论我是在同一个标签中打开一个链接还是在新标签中。 数字更改的唯一时间是我打开一个新窗口时(但如果我在同一窗口中打开一个新链接或该窗口中的新选项卡,该数字仍然与最初为该窗口显示的数字相同)。 例如,如果我在窗口1中打开一个站点并单击扩展名的按钮,它将显示111.当我单击按钮时,我在此窗口中打开的每个其他链接将始终显示111。如果我在窗口1打开时打开另一个窗口,当我单击该按钮时它可能会显示555,这将是此窗口中每个新选项卡的编号。
我在Chrome中尝试了相同的代码(准确地说是SRWare Iron)和IE 11,所有内容似乎都按预期工作。
我也很确定问题来自代码的setPopup部分,因为我试图通过alert显示randomNumber的值,每次都不同(加上代码在IE和Chrome中有效) (尚未在Safari中测试过))。
这是扩展ID,以防它可能有所帮助 - 72164
P.S。我的英语技能有点生疏,所以如果我没有正确解释,请告诉我。