事件对象不仅仅用Firefox定义(IE和Chrome的工作原理)

时间:2014-09-10 21:43:08

标签: javascript html internet-explorer google-chrome firefox

<a class="lnk" href="#" onclick="showItem();">
    <span data-id="27">TEST</span>
</a>

function showItem()
{
    var itid = event.target.dataset.id;
    alert(itid);
}

如果您尝试this jsfiddle code,您可以看到使用IE(11)和Chrome正确评估事件对象,但使用Firefox(32.0)时会出现错误(ReferenceError:未定义事件)

这是Firefox或IE和Chrome中不同的事件对象生命周期的错误? 然而,因为在IE和Chrome中它正在工作,我认为这是一个问题。 关于解决方法?

p.s:在jsfiddle中,只有firefox,代码选择仍有问题(经过一些运行后你无法选择代码。

1 个答案:

答案 0 :(得分:16)

您应该将event作为参数传递给函数:

<a class="lnk" href="#" onclick="showItem(event);">
    <span data-id="27">TEST</span>
</a>

function showItem(e)
{
    e = e || window.event;
    var itid = e.target.dataset.id;
    alert(itid);
}

将其作为全局变量访问是Chrome复制的IE功能,但我不认为它是标准的Javascript。