Chrome扩展程序:事件监听器

时间:2013-11-17 01:12:48

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

我知道因为chrome的csp,我无法执行内联javascript。我有一个名为popup.html的html文件,其中包含此文件。

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

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

document.addEventListener('DOMContentLoaded', init());

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

每当我重新加载chrome扩展,或点击扩展图标时,func()会被触发,但是当我点击监听器订阅的实际按钮(Button)时,没有任何反应。我在控制台中使用“inspect popup”并使用location.reload()来查看调试器,似乎elem是通过getElementById()正确设置的,但是在重新加载页面时会立即触发事件,而不是单击链接。

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

1 个答案:

答案 0 :(得分:2)

将函数传递给事件监听器,如document.addEventListener('DOMContentLoaded', init());

立即调用该函数。正确的方法是执行此操作

document.addEventListener('DOMContentLoaded', init);