我想在自定义面板中刷新信息。
但是onShown在观看面板时无法刷新。我怎样才能或者...必须在 onShow 中使用 setInterval() ?
manifest.json:
{
"name": "sample",
"version": "0.1",
"manifest_version": 2,
"devtools_page": "devtools.html"
}
devtools.html:
<html><body><script src="devtools.js"></script></body></html>
devtools.js:
var view_counts = 0;
chrome.devtools.panels.create(
"sample", "sample.png", "sample.html",
function(panel){
panel.onShown.addListener(function(panel_window){
panel_window.document.getElementById("show_count").innerHTML = view_counts;
// and moer update.
});
}
);
chrome.devtools.network.onRequestFinished.addListener(
function(entries) {
if(entries.request.url == "http://example.com/"){
view_counts++;
// and more analytics
}
}
);
示例.html:
<html><body>count: <div id="show_count">-</div></body></html>
最佳答案
当您刷新页面时,您的自定义面板不会自行刷新。当自定义面板可见/单击时,还会触发面板的 onShown
事件。因此,您的代码将无法显示刷新信息。
您必须将 panel_window
引用存储在全局变量中,以便您可以在 onRequestFinished
事件处理程序中访问相同的引用来执行所需的操作。我已经编辑了您的代码,请在下面检查:
请按如下方式更改您的 devtools.js
var view_counts = 0;
var _windowObj;
chrome.devtools.panels.create(
"sample", "sample.png", "sample.html",
function(panel){
panel.onShown.addListener(function tmp(panel_window){
panel.onShown.removeListener(tmp);
_windowObj = panel_window;
_windowObj.document.getElementById("show_count").innerHTML = view_counts;
});
}
);
chrome.devtools.network.onRequestFinished.addListener(
function(entries) {
if(entries.request.url == "http://example.com/"){
view_counts++;
}
_windowObj.document.getElementById("show_count").innerHTML = view_counts;
}
);
关于javascript - 观看时如何更新 chrome.devtools.panels?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19064652/