我正在尝试使用此处提供的示例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)
还有其他人能够运行此示例扩展吗?我希望能帮助你解决这个问题。
答案 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提交补丁。不过,这是一个参与的过程。