javascript - 观看时如何更新 chrome.devtools.panels?

标签 javascript google-chrome-extension google-chrome-devtools

我想在自定义面板中刷新信息。

但是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/

相关文章:

javascript - 在 Javascript 中将不透明度转换为十六进制

使用带有 switchToIframe 的 Testcafe 测试 chrome 扩展

javascript - 为什么我的自定义元素的所有 css 在 Chrome 开发工具中都显示为用户代理样式表?

javascript - 不同文件中的 Socket.io

javascript - 为什么jQuery或诸如getElementById之类的DOM方法找不到元素?

javascript - 类型错误 : store. getState 不是函数。 (在 'store.getState()' 中, 'store.getState' 未定义

javascript - Chrome 扩展替换文本

javascript - Chrome扩展程序保存临时文件

javascript - 在全局范围内查找 JavaScript 函数

javascript - Chrome 控制台错误?