除非选择停止按钮,否则我正在制作Chrome扩展程序以继续刷新页面。但我只能做一次。这是我的background.js代码
chrome.extension.onMessage.addListener(function(request, sender, sendResponse) {
switch(request.type) {
case "table-row-count_start":
alert("Refershing started");
RefreshAndCount();
break;
case "table-row-count_stop":
alert("Stop Refershing");
break;
}
return true;
});
var RefreshAndCount = function() {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {type: "table-row-count"});
chrome.browserAction.setBadgeText({tabId: tabs[0].id, text: "Counting!"});
});
};
在content.js中我这样做了:
chrome.extension.onMessage.addListener(function(message, sender, sendResponse) {
alert(message.type);
switch(message.type) {
case "table-row-count":
var x = document.querySelector('table').rows.length;
chrome.storage.sync.set({'value': x}, function() {
console.log('Settings saved');
});
chrome.storage.sync.get(["value"], function(items){
console.log(items);
});
alert("Row count = " + x);
setTimeout(function(){
location.reload();
},100);
break;
}
});
chrome.storage.onChanged.addListener(function(changes, namespace) {
for (key in changes) {
if(key=='value'){
var storageChange = changes[key];
console.log('Storage key "%s" in namespace "%s" changed. ' +
'Old value was "%s", new value is "%s".',
key,
namespace,
storageChange.oldValue,
storageChange.newValue);
}
}
});
刷新后我想每次都打印当前的行计数警报。请帮助如何做到这一点。
这项工作很好,只需一次刷新,但之后我又必须从弹出窗口中选择开始按钮。
我想要一些方法,我不需要再次单击开始按钮,整个过程重复,将前一行计数存储在缓存或其他内容。
popup.js
window.onload = function() {
document.getElementById("mystartbutton").onclick = function() {
chrome.extension.sendMessage({
type: "table-row-count_start"
});
}
document.getElementById("mystopbutton").onclick = function() {
chrome.extension.sendMessage({
type: "table-row-count_stop"
});
}
}
还帮助我即使切换到其他标签或最小化我的Chrome,如何继续引用该页面?
答案 0 :(得分:1)
您可以使用chrome.storage.local存储将在您使用它的上下文中保存的数据。您可以将布尔值设置为true或false以启用或禁用自动重载。然后,您只需在单击浏览器操作时进行设置,然后在内容脚本中进行检查,以了解是否必须重新加载。
一个可能的简单实现应该是这样的:(这取决于预期的行为)
content.js (必须在页面中注入自动重载)
var reloadDuration = 5000;
function autoreload()
{
chrome.local.storage.get("autoreload_enabled", function(result)
{
if(result.autoreload_enabled)
{
chrome.runtime.sendMessage({type: "table-row-count"});
window.location.reload();
}
}
}
setTimeout(autoreload, reloadDuration);
如果名为reloadDuration
的chrome本地存储中的布尔值设置为true,则会每隔autoreload_enabled
重新加载一次页面。