onClick事件不适用于Firefox中的锚标记

时间:2011-03-10 19:00:07

标签: javascript firefox javascript-events

单击我的锚标记(如下所示)不会隐藏notify-parent div。 notify-parent div在IE7和IE8中正确隐藏,但在Firefox中没有。

<script type="text/javascript">
    function checkClick(e) {
        var obj = e.srcElement;
        if (obj.id != "notify-parent")
            document.getElementById('notify-parent').style.display = 'none';

        return;
    }
</script>

<div id="notify-parent" style="padding-bottom: 10px; margin-top: -10px;">
    <table width="800">
        <tr>
            <td>
                &nbsp;
            </td>
        </tr>
        <tr>
            <td align="center">
                <div id="notify-container">
                    <table style="padding: 10 10 10 10">
                        <tr>
                            <td>&nbsp;
                            </td>
                            <td>&nbsp;
                            </td>
                            <td align="right">
                                <a class="close-notify" onclick="checkClick(event);return false" title="dismiss this notification">
                                    ×</a>
                            </td>
                        </tr>
                        <tr>
                            <td>&nbsp;
                            </td>
                            <td>
                                A message goes here
                            </td>
                        </tr>
                        <td>&nbsp;
                        </td>
                    </table>
                </div>
            </td>
        </tr>
    </table>
</div>

我尝试添加href =“#”,但这并没有解决问题。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

firefox中的事件对象上没有srcElement。我可以在萤火虫中看到这个。您可以考虑使用目标。您还可以使用javascript框架来跨浏览器对其进行标准化。不记得了,但我确信JQuery会这样做。

萤火虫很棒btw。我设置了一个断点,并为您提供了一个截图,以便您可以在firefox上查看该事件对象中的确切内容。

FirebugBreakpoint

另请参阅https://developer.mozilla.org/en/DOM/event作为参考。

  

event.target ::对最初调度事件的目标的引用

答案 1 :(得分:2)

你可以尝试回到目标。

var obj = e.srcElement? e.srcElement : e.target;

答案 2 :(得分:0)

我认为onclick事件在IE中工作正常。我认为你的问题是javascript事件处理的方式,在IE中有效,但我认为它不适用于Firefox。

您可以通过添加警报(“test”)来验证是否在firefox中进行了调用;到第一行它应该出现......

而不是尝试从事件模型中执行此操作,为什么不直接将函数传递给您想要知道的数据...

function checkClick(id) {
        if (id != "notify-parent")
            document.getElementById('notify-parent').style.display = 'none';

        return;
    }

然后在下面你称之为......

 <a class="close-notify" onclick="checkClick('notify-container');return false" title="dismiss this notification">

它会为您节省很多麻烦,因为每个浏览器都以不同方式实现事件模型。