我想在自定义面板中刷新信息。
但观看面板时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
}
}
);
sample.html:
<html><body>count: <div id="show_count">-</div></body></html>
答案 0 :(得分:1)
刷新页面时,自定义面板不会自行刷新。当自定义面板可见/单击时,也会触发面板的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;
}
);
答案 1 :(得分:0)
保持panel_window对象的全局。
请求数据在onRequestfinished时写入panel_window的隐藏字段。
panels_window分析间隔事件的一些数据。
我希望也许有聪明的方法。