谷歌铬闲置api样本无法正常工作

时间:2017-10-04 10:02:40

标签: javascript google-chrome google-chrome-extension

我正在尝试使用此处提供的示例chrome扩展来了解chrome idle API的工作原理:https://developer.chrome.com/extensions/samples#search:idle

我也看过这个类似的问题:Google chrome - extension chrome idle not working但它似乎也没有帮助。 但是,实际上我遇到了困难。在不更改任何内容的情况下,我将扩展文件加载到Chrome上的开发者模式单击扩展图标后,将显示弹出窗口,该弹出窗口旨在每秒查询状态。但是,即使我在弹出窗口中单击,也不会更新状态。检查控制台后,我发现以下错误:

  

未捕获的TypeError:无法设置属性' innerHTML'为null       at renderHistory(history.js:66)       在HTMLDocument。 (history.js:82)

还有其他人能够运行此示例扩展吗?我希望能帮助你解决这个问题。

1 个答案:

答案 0 :(得分:1)

这只是一个编程错误:示例代码中的竞争条件。

var dom_history = document.querySelector('#idle-history');

此分配发生在DOMContentLoaded之外,并且脚本已加载到<head> - 所以即使它稍后存在,也会加载actually doesn't find the element at runtime

可能在时间不同之前,扩展工作正常。

要在本地修复,请在全局范围内声明变量,但在DOMContentLoaded侦听器内部分配(不要说它是最好的解决方案,只需要很少的更改):

var dom_history;
document.addEventListener('DOMContentLoaded', function() {
  dom_history = document.querySelector('#idle-history');
  /* ... */
});

为每个人修复它。您可以随时尝试为this code in Chromium repository提交补丁。不过,这是一个参与的过程。

相关问题