【发布时间】:2017-09-12 00:59:00
【问题描述】:
通过开发以下代码,
Popup.js
$( function() {
$( "#slider-range-min" ).slider({
range: "min",
value: 5,
min: 1,
max: 15,
slide: function( event, ui ) {
$( "#amount" ).val( ui.value );
var port = chrome.extension.connect({
name: "Sample Communication"
});
port.postMessage(ui.value);
}
});
$( "#amount" ).val( $( "#slider-range-min" ).slider( "value" ) );
} );
Background.js(监听器)
chrome.extension.onConnect.addListener(function(port) {
port.onMessage.addListener(function(msg) {
timer=msg;
});
})
$(function(){
interval = 1000 * 60 * timer; // where X is your every X minutes
setInterval(func1, parseInt(interval));
setInterval(func2,300);
});
Background.js(加载数据)
$.get('link',
function(data)
{
if (data.total != 0) {
$.each(data.issues, function(k, v) {
if (!list.some(function(o) {
return o.key === v.key
}))
list.push({
"key": v.key,
"title": v.title,
"sent": false
});
});
//console.log(list);
}
});
但是当我想测试它时,使用间隔的动态值,遇到错误,其中包含
net::ERR_INSUFFICIENT_RESOURCES
有人可以帮助我解释为什么我在将其用作动态时会出现此错误,但是当我将特定值用作数字时却可以正常工作。
更新 正如我检查的问题与默认值为0有关, 所以错误的事情是当我更改进度值时,我的后台 js 中没有任何变化,因为我检查了 console.log 并且每次我点击弹出窗口中的扩展按钮时,该值都是默认值并且更改不会保存。
【问题讨论】:
-
如果您的计时器变量最初为 0 或未定义,setInterval 将每秒运行数千或数百万次。
-
就像
chrome.extension.getBackgroundPage()一样简单。不需要消息或任何你想要做的事情。 -
@wOxxOm 默认为 5000
-
@MarcGuiselin 它的工作原理
-
@programmer.okz 我怀疑
timer没有全局设置。因此,当您运行timer = msg;时,timer在您运行interval = 1000 * 60 * timer;时不存在
标签: jquery google-chrome jquery-ui google-chrome-extension google-chrome-devtools