0
我正在做一个builder.addons.mozilla插件,我已经发布了下面的main.js代码。这个想法是,当我点击插件的小部件时,它通过将disableWebIQ变量设置为true来禁用在panelist-webiq-cdn.appspot.com/warptest上运行的脚本。设置变量可以工作,但每当安装插件时,页面脚本中的setTimeout调用都不起作用。向页面添加PageMod是否禁用setTimeout?setTimeout不能与插件一起工作
按钮脚本和myScript.js的代码没有太多的功能,而且当你单击widget时myScript.js不会运行,所以我怀疑这是什么在页面中禁用了setTimeout。
var ss = require("simple-storage");
ss.storage.enabled = true;
ss.storage.panelIdList = [];
const widgets = require("widget");
const data = require("self").data;
var player = widgets.Widget({
id: "player",
width: 16,
label: "PanelistWebIQ",
contentURL: data.url("buttons.html"),
contentScriptFile: data.url("buttonScript.js"),
onClick: function(){
if(ss.storage.enabled){
ss.storage.enabled = false;
pageMod.destroy();
}
else{
ss.storage.enabled = true;
pageMod = pageModModule.PageMod({
include: "*",
contentScriptWhen: 'start',
contentScriptFile: data.url('myScript.js')
});
}
}
});
var pageModModule = require("page-mod");
var pageMod = pageModModule.PageMod({
include: "*",
contentScriptWhen: 'start',
contentScriptFile: data.url('myScript.js'),
onAttach: function(worker){
var url = worker.url;
var newPanelId = '';
if(url.match(/^https?:\/\/panelist-webiq-cdn.appspot.com.*panelId=.*$/)){
var pattern = 'panelId=';
var index = url.indexOf(pattern);
var sub = url.substring(index + pattern.length);
index = sub.indexOf('&');
if(index==-1){
newPanelId = sub;
}
else{
newPanelId = sub.substring(0, index);
}
}
var list = ss.storage.panelIdList;
if(newPanelId){
var matchFound = false;
for(var ctr=0; ctr<list.length; ctr++){
var panelId = list[ctr];
if(panelId==newPanelId){
matchFound = true;
break;
}
}
if(!matchFound){
list.push(newPanelId);
}
}
worker.postMessage(list + '');
}
});
不,内容脚本通常不会禁用超时。但是应该很容易测试'myScript.js'是否相关 - 将其替换为空文件并再次测试。 – 2012-07-06 18:24:59