Функция запуска прослушивателя событий до того, как элемент будет нажат в расширении Chrome

Недавно я создавал расширение для Google Chrome, и в манифесте версии 2 говорится, что я не могу использовать обработчики событий (onclick, onmouseover, ondblclick и т. д.) ВНУТРИ html-файлов, которые я создаю. В нем говорится, что я могу создать их в сценарии, на который я ссылаюсь. Единственная проблема заключается в том, что когда я щелкаю значок, функция запускается до того, как я щелкаю фактический элемент div. Я действительно запутался в том, что я сделал неправильно, поэтому я попробовал несколько способов:

Мой файл 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')}

После того, как я заметил, что этот способ не работает, я пошел с этим:

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

Любой из способов, которыми я это сделал, будет предупреждать, когда я нажимаю значок расширения, и он даже не запускает popup.html. Я не знаю, нужно ли мне добавлять к нему функцию, но, поскольку я новичок в этом (мое первое расширение), я действительно не знаю, должен ли я добавить специальный метод chrome или что-то в этом роде. Я просмотрел страницу Google Dev, но это не помогло. Это научило меня только основам.

Любая помощь будет оценена, спасибо заранее.


person user2673553    schedule 05.09.2013    source источник
comment
Ваш вызов addEventListener должен передать функцию; вы передаете возвращаемое значение от вызова к alert()   -  person Pointy    schedule 05.09.2013


Ответы (1)


Так должно быть:

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

Вы вызываете alert() и передаете результат addEventListener. Вам нужно передать функцию, которая будет вызывать alert().

Кстати, при указании события в addEventListener вы не включаете префикс on — это просто click.

person Barmar    schedule 05.09.2013
comment
Итак, если я хочу передать функцию, мне нужно сделать что-то вроде этого?: sButton.addEventListener('onclick', function() {myFunctionCall()},false); - person user2673553; 06.09.2013
comment
Если вы просто хотите передать именованную функцию, вы можете сделать sButton.addEventListener('click', myFunctionCall). Вам нужно только обернуть его в function() {...}, если вам нужно указать аргументы функции, как в вашем предупреждении. - person Barmar; 06.09.2013
comment
Спасибо за вашу помощь. Я пробовал как onclick, так и просто click, но они, похоже, не работают. Я попробую то, что вы сказали прямо сейчас, и обновлю информацию о том, что происходит. Спасибо еще раз. - person user2673553; 06.09.2013
comment
Он работает отлично, большое спасибо за вашу помощь ... Извините, я не отредактировал свой другой комментарий, он не позволил мне, поэтому мне пришлось создать новый. Спасибо еще раз, хотя. - person user2673553; 06.09.2013
comment
Существует ограничение по времени между написанием и редактированием комментария, я думаю, это 5 минут. - person Barmar; 06.09.2013