我正在开发Chrome扩展程序,并且正在研究chrome启动时如何执行代码。
我有这些文件:
script.js
index.html
manifest.json
在script.js中,我有:
$(document).ready(function() {
$.getJSON("https://api.twitch.tv/kraken/streams/"+"NameOfStreamer",function(c) {
if (c.stream == null) {
...
} else {
...
}
});
});
我想执行此代码不是在HTML完成渲染时而是在Chrome首先启动然后每分钟重新运行时执行。
该想法与相同$(document).ready()
,但在Chrome启动时执行。
请先阅读体系结构概述。这不是很长的文字,但非常重要。
弹出窗口仅在打开时才存在。没有的时候没有代码可以运行。
解决方案是使用背景页面:这是一个不可见的页面,它会在Chrome启动后立即创建,并在Chrome的整个生命周期中继续运行。
执行:
在清单中,声明您的后台脚本(按加载顺序):
"background" : {
"scripts": ["jquery.js", "background.js"]
},
该代码将在Chrome启动后立即运行。无需$(document).ready
包装器:
$.getJSON("https://api.twitch.tv/kraken/streams/"+"NameOfStreamer", function(c) {
/* ... */
});
如果需要重复,可以使用chrome.alarms
API或仅使用DOM间隔:
getData();
setInterval(getData, 60000); // Once every minute
function getData() {
$.getJSON("https://api.twitch.tv/kraken/streams/"+"NameOfStreamer", function(c) {
/* ... */
});
}
这就解决了获取更新数据的问题。但是背景页面是不可见的。如果要显示数据,则可以使用browserAction弹出窗口。
这样,您可以将扩展名分为处理数据(背景)的部分和显示该数据的弹出窗口。
您将不得不以某种方式从后台请求数据。对于这个问题,如何执行此操作太过广泛了,但是您可以使用Messaging API或直接使用访问后台页面chrome.runtime.getBackgroundPage()
。您也可以将数据存储在中chrome.storage
,可从弹出窗口访问。这可能不是详尽的清单。
另外,根据您的需求,您可能需要查看通知。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句