Chrome 扩展程序:事件侦听器

Chrome Extension: event listeners

本文关键字:事件 侦听器 程序 扩展 Chrome      更新时间:2023-09-26

我知道由于Chrome的csp,我无法执行内联JavaScript。我有一个名为popup的html文件.html其中包含以下内容:

    <body>
        <a href="#" id="clickme">Button</a>
    </body>

以及一个名为chrome的外部JavaScript文件.js其中包含以下代码:

document.addEventListener('DOMContentLoaded', init());
function init(){
    var elem = document.getElementById('clickme');
    elem.addEventListener('click',func());
}
function func(){
    alert('button clicked');
}

每当我重新加载Chrome扩展程序或单击扩展程序图标时,func()都会被触发,但是当我单击侦听器订阅的实际按钮(按钮)时,没有任何反应。我已经使用"检查弹出窗口"并在控制台中使用location.reload()查看了调试器,似乎通过 getElementById() 正确设置了 elem ,但事件在重新加载页面时立即触发,而不是在单击链接时。

如何让事件在点击时触发,而不是在页面加载时触发?

函数传递给事件侦听器,如下所示document.addEventListener('DOMContentLoaded', init());

立即调用该函数。正确的方法是这样做

document.addEventListener('DOMContentLoaded', init);