我正在使用两个按钮进行chrome扩展:Start和Stop。点击开始按钮html页面,应该在特定计时器后开始刷新,点击停止时它应该停止刷新。
每次刷新后,HTML页面都有一个表格,其中包含id myTable.So,我想要有这个表的行数。
为了得到这个,我做了类似的事情:
首先弹出,我做了popup.js
window.onload = function() {
document.getElementById("startbutton").onclick = function() {
chrome.extension.sendMessage({
type: "table-row-count_start"
});
}
document.getElementById("stopbutton").onclick = function() {
chrome.extension.sendMessage({
type: "table-row-count_stop"
});
}
}
在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.getSelected(null, function(tab){
chrome.tabs.sendMessage(tab.id, {type: "table-row-count"});
chrome.browserAction.setBadgeText({text: "Counting!"});
});
}
这将调用content.js,因为我们需要与HTML页面的DOM进行交互。在这个脚本中我做了类似的事情:
chrome.extension.onMessage.addListener(function(message, sender, sendResponse) {
switch(message.type) {
case "table-row-count":
var x = document.getElementById("myTable").rows.length;
alert("Row count = " + x);
var Refresh = confirm("Do you want to refresh the page?");
if (Refresh)
{
setTimeout("location.reload(true);",5000);
}
break;
}
});
永远不会调用脚本content.js。我不知道为什么会这样。请帮忙。 它也只刷新一次,如何在固定定时器后保持参考。
这是manifest.json
{
"name": "Refresher",
"version": "0.0.1",
"manifest_version": 2,
"description" : "Refresh the site contents after a while",
"icons": { "32": "icon.jpg" },
"browser_action": {
"default_icon": { "32": "icon.jpg" },
"default_title": "Refersher",
"default_popup": "browseraction/popup.html"
},
"background": {
"scripts": ["background.js"],
"persistent": true
},
"content_scripts": [{
"matches": ["http://www.w3schools.com/html/tryit.asp?filename=tryhtml_table"],
"js": ["content.js"]
}]
}
答案 0 :(得分:0)
在这种情况下,您使用了已弃用的chrome.tabs.getSelected
,它返回了标识为-1
的错误标签,因此邮件从未发送,并且控制台中显示错误。
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!"});
});
};
另请注意setBadgeText
仅用于指定标签的方式。
N.B。 Always,always使用调试程序检查错误。因此,您可以停止使用alert
并开始使用console.log
或检查/观察调试器中的变量。