Я не могу заставить мой JavaScript eventlistener работать должным образом - PullRequest
0 голосов
/ 02 марта 2010

Это поставило меня в тупик, я пробовал много разных вещей, но я не могу заставить это работать. Кто-нибудь может помочь? Независимо от того, что я пытаюсь, я не могу получить список событий click для ссылки. Код находится в скрипте greasemonkey. Я считаю, что мне нужно использовать метод закрытия, чтобы иметь возможность ссылаться на функцию dropit в скрипте greasemonkey, так как она недоступна для кода на странице.

dropit = function (e) {
  e.preventDefault();
  alert(e.target.textContent);
}

document.getElementById('newlink').addEventListener('click',
         function (e){
                   return function (){
                     dropit(e);
                   }
                 }(),false);

Ответы [ 4 ]

2 голосов
/ 02 марта 2010

Вы должны иметь свой скрипт Greasemonkey записать код в новый тег <script> на странице. Как только это будет сделано, настройка обработчика событий на странице может продолжаться как обычно. По крайней мере, это единственный способ, который я когда-либо знал.

0 голосов
/ 02 марта 2010
<a id='mylink' href='http://www.google.com'>google</a> the link 

<script src="http://yui.yahooapis.com/3.0.0/build/yui/yui-min.js"></script>
<script>
YUI().use('event', function(Y){

  Y.one('#mylink').on('click', function(e){
    e.halt();
    alert(this.get('href'));  
  });
}); 
</script>
0 голосов
/ 02 марта 2010

здесь не версия YUI

<a id='mylink' href='#'>google</a> the link 

<script>

(function(){
  var dropit = function (e) {
    e.preventDefault();
    alert(e.target.textContent);
  }

  document.getElementById('mylink').addEventListener('click', dropit, false);
}());
</script>
0 голосов
/ 02 марта 2010

e необходимо передать во вторую функцию внутри addEventListener, а не в первую. Как это:

dropit = function (e) {
  e.preventDefault();
  alert(e.target.textContent);
}

document.getElementById('newlink').addEventListener('click',
         function (e){
                   return function (e){
                     dropit(e);
                   }
                 }(e),false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...