Firefox не регистрирует обработчик события onclick - PullRequest
0 голосов
/ 14 октября 2010

Ниже приведены два фрагмента кода для назначения обработчика события для события onclick.Первая версия работает в IE, FF, Safari и Chrome.Вторая версия работает в IE, Safari и Chrome, но не в FF.В первой версии я регистрирую обработчик событий в разметке.Во второй версии я использую более новый и, предположительно, более надежный метод регистрации обработчика событий.

Используя firebug, похоже, что обработчик события onclick не регистрируется, хотя я не понимаю, почему нет.Любые идеи приветствуются.Спасибо.

***************  Version One  ******************************
&lt script type="text/javascript"&gt

function handler()
{
    // do something here
}

&lt/script&gt

&lt a id="playerFive" class="player" onclick="handler()"&gt
    &lt img src="./images/speakerIcon25pxFFF4E0.png" alt=""/&gt
&lt/a&gt
************************************************************


***************  Version Two  ******************************
&lt script type="text/javascript"&gt

function handler()
{
    // do something here
}

&lt/script&gt

&lt a id="playerFive" class="player"&gt
    &lt img src="./images/speakerIcon25pxFFF4E0.png" alt=""/&gt
&lt/a&gt

&lt script type="text/javascript"&gt

playerFive.onclick = handler;

&lt /script&gt
************************************************************

Ответы [ 4 ]

1 голос
/ 14 октября 2010

FF не позволяет вам обращаться к элементам DOM как к переменным javascript, названным по их идентификатору.

Вместо этого вам нужно использовать getElementById.

0 голосов
/ 14 октября 2010
<html>
 <head>
  <script type="text/javascript">
    window.onload = function() { 
        var div = document.getElementById("dvClickMe");
        if(div.attachEvent)
            div.attachEvent('onclick', sayHello); 
        else
            div.setAttribute('onclick', 'sayHello()');
    }
    function sayHello() { alert("Hello!"); }
  </script>
 </head>
 <body>
   <div id="dvClickMe">Click me!</div>
 </body>
</html>

Приведенный выше код работает на IE8 и FF 3.6.10

0 голосов
/ 14 октября 2010

Вы можете попробовать этот код

 if(document.all)// For IE
 {   
       document.getElementById('playerFive').attachEvent('onclick',handler);
 }
 else // For FF
 {
       document.getElementById('playerFive').addEventListener('click',handler,false);
 }
0 голосов
/ 14 октября 2010

в последнем блоке скрипта, playerFive никогда нигде не определено, вы, вероятно, хотите

document.getElementById('playerFive').onclick=handler;
...