Firefox没有注册onclick事件处理程序

时间:2010-10-14 06:18:23

标签: events firefox handler

下面是两段代码,用于为onclick事件分配事件处理程序。版本1适用于IE,FF,Safari和Chrome。版本2适用于IE,Safari和Chrome,但不适用于FF。在Version One中,我在标记中注册事件处理程序。在第二版中,我使用了一种更新的,更强大的方法来注册事件处理程序。

使用firebug,看起来onclick事件处理程序没有注册,但我看不出原因。任何想法都赞赏。感谢。

***************  Version One  ******************************
< script type="text/javascript">

function handler()
{
    // do something here
}

</script>

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


***************  Version Two  ******************************
< script type="text/javascript">

function handler()
{
    // do something here
}

</script>

< a id="playerFive" class="player">
    < img src="./images/speakerIcon25pxFFF4E0.png" alt=""/>
</a>

< script type="text/javascript">

playerFive.onclick = handler;

< /script>
************************************************************

4 个答案:

答案 0 :(得分:1)

FF不允许您将DOM元素作为其ID标识的javascript变量进行访问。

您需要改为使用getElementById

答案 1 :(得分:0)

在最后一个脚本块中,playerFive永远不会在任何地方定义,您可能需要

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

答案 2 :(得分:0)

您可以尝试此代码

 if(document.all)// For IE
 {   
       document.getElementById('playerFive').attachEvent('onclick',handler);
 }
 else // For FF
 {
       document.getElementById('playerFive').addEventListener('click',handler,false);
 }

答案 3 :(得分:0)

<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