2

我最近一直在創造谷歌Chrome和清單第2版的擴展說我不能使用事件處理程序(的onclick,的onmouseover,onfocus此等)中HTML文件我創建。它確實表示我可以在我鏈接到的腳本上創建它們。唯一的問題是,當我點擊圖標時,該功能在我點擊實際的div元素之前運行。我真的糊塗的我做錯了什麼,所以我已經試過了幾種方法:事件監聽器運行功能的元件之前被點擊Chrome擴展

我的manifest.json文件似乎是工作的罰款,我沒有得到任何錯誤,每一頁都鏈接的作品,以及作爲icon.png文件。

{ 
    "name" : "Test", 
    "version" : "1.0", 
    "manifest_version" : 2, 
    "description" : "Trying it out", 
    "browser_action" : { 
"default_icon" : "icon.png", 
"defalut_title" : "Test", 
"default_popup" : "popup.html" 
}, 
    "chrome_url_overrides" : { 
"newtab" : "newtab.html" 
} 
} 

以下是我把我的popup.html文件:

<html> 
<head></head> 
<body> 
<div id="submitButton">Submit!</div> 
</body> 
</html> <!-- The rest of the code is unnecessary since it is not used as for now --> 
<script type="text/javascript" src="popup.js"></script> 

我popup.js文件中有這樣的功能:

var sButton = document.getElementById('submitButton'); 
sButton.addEventListener('onclick',alert('This is not supposed to happen until I click the div'),false); 

//I also put the alert in a function like so: function() {alert('what it said')} 

後,我注意到這樣沒」 t工作,我去了這個:

sButton.onclick = function() {alert('same thing')} 

Eithe當我點擊擴展名圖標時,它會提醒我,它甚至沒有運行popup.html。我不知道是否需要添加一個函數,但由於我是新手(我的第一個擴展),我不知道是否應該添加一個特殊的chrome方法或其他東西。我瀏覽了Google Dev頁面,但沒有幫助。它只教會了我基本知識。

任何幫助將提前讚賞,感謝。

+0

您的來電'addEventListener'需要通過一個功能;你將呼叫的返回值傳遞給'alert()' – Pointy

回答

1

它應該是:

sButton.addEventListener('click', 
    function() {alert('This is not supposed to happen until I click the div'),false);}); 

你打電話alert()其結果傳遞給addEventListener。您需要傳遞一個函數,該函數將調用alert()

順便說一句,在addEventListener中指定事件時,不包含前綴on - 它只是click

+0

因此,如果我想傳遞一個函數,我不得不這樣做: sButton.addEventListener('onclick', function ){myFunctionCall()},false); – user2673553

+0

如果你只是想傳遞一個命名函數,你可以做'sButton.addEventListener(「點擊」,myFunctionCall)'。如果需要爲函數指定參數,則只需將其包裝在'function(){...}'中,就像在alert中一樣。 – Barmar

+0

謝謝你的幫助。我試過兩次onclick,只是點擊,但他們似乎沒有工作。我會嘗試你現在所說的話並更新發生的事情。再次感謝。 – user2673553