我知道因为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()正确设置的,但是在重新加载页面时会立即触发事件,而不是单击链接。
如何在点击而不是在页面加载时触发事件?
答案 0 :(得分:2)
将函数传递给事件监听器,如document.addEventListener('DOMContentLoaded', init());
立即调用该函数。正确的方法是执行此操作
document.addEventListener('DOMContentLoaded', init);