单击我的锚标记(如下所示)不会隐藏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>
</td>
</tr>
<tr>
<td align="center">
<div id="notify-container">
<table style="padding: 10 10 10 10">
<tr>
<td>
</td>
<td>
</td>
<td align="right">
<a class="close-notify" onclick="checkClick(event);return false" title="dismiss this notification">
×</a>
</td>
</tr>
<tr>
<td>
</td>
<td>
A message goes here
</td>
</tr>
<td>
</td>
</table>
</div>
</td>
</tr>
</table>
</div>
我尝试添加href =“#”,但这并没有解决问题。
我做错了什么?
答案 0 :(得分:2)
firefox中的事件对象上没有srcElement。我可以在萤火虫中看到这个。您可以考虑使用目标。您还可以使用javascript框架来跨浏览器对其进行标准化。不记得了,但我确信JQuery会这样做。
萤火虫很棒btw。我设置了一个断点,并为您提供了一个截图,以便您可以在firefox上查看该事件对象中的确切内容。
另请参阅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">
它会为您节省很多麻烦,因为每个浏览器都以不同方式实现事件模型。