我正在开发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启动时执行。
答案 0 :(得分:3)
请先阅读Architecture Overview。这不是一篇长文,但非常重要。
弹出窗口只有在打开时才存在;没有代码可以运行,而不是。
background page是解决方案:它是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 intervals:
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
中,可以从弹出窗口访问。这可能不是一个详尽的清单。
或者,根据您的需要,您可能需要查看notifications。
答案 1 :(得分:0)
您需要使用onCreated
事件铬:
chrome.windows.onCreated.addListener(function() {
//do stuff
});
<强> Docs for event onCreated 强>