【问题标题】:event object not defined only with Firefox (IE and Chrome works) [duplicate]事件对象不仅在 Firefox 中定义(IE 和 Chrome 有效)[重复]
【发布时间】:2014-11-04 16:51:42
【问题描述】:
<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 : event is not defined)

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

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

【问题讨论】:

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


    【解决方案1】:

    您应该将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。

    【讨论】:

    • ok 工作,但部分问题是:为什么在 IE 和 Chrome 中工作而不通过事件?他们隐含地通过它?
    • 他们有一个设置为当前事件的全局变量。
    • 好的,这部分问题的答案在这里stackoverflow.com/questions/7457260/…
    • 对。这个答案在 IE 中不起作用。该问题显示了所有浏览器的正确代码。
    猜你喜欢
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    相关资源
    最近更新 更多