Firefox"window.event未定义"错误

Maj*_*jid 13 javascript firefox events

我有这个脚本:

function postBackByObject(e) {
   var o = window.event.srcElement || e.target;
   if (o.tagName == "INPUT" && o.type == "checkbox") {
        __doPostBack("", "");
    }
}
Run Code Online (Sandbox Code Playgroud)

我用这个脚本onclick="postBackByObject();".

但在Firefox 21中我收到此错误:

TypeError:window.event未定义

我错了什么?

Nie*_*sol 15

那是因为它是.window.event适用于旧版本的IE.

这样做的典型方法是:

function postBackByObject(e) {
    e = e || window.event;
    var o = e.srcElement || e.target;
    // ...
}
Run Code Online (Sandbox Code Playgroud)


c.P*_*.u1 7

您正在内联事件 onclick="postBackByObject();"

尝试传递this(事件目标)以onclick="postBackByObject(this);" 修改您的函数以处理此更改:

function postBackByObject(e) {
   if (e.tagName == "INPUT" && e.type == "checkbox") {
        __doPostBack("", "");
    }
}
Run Code Online (Sandbox Code Playgroud)

更好的选择是使用附加事件 addEventListener

如果你的标记看起来像:

<div id="TvCategories" onclick="postBackByObject(this);" />
Run Code Online (Sandbox Code Playgroud)

然后

document.getElementById('TvCategories').addEventListener('click', postBackByObject);
Run Code Online (Sandbox Code Playgroud)

postBackByObject使用此方法时,您的功能保持不变.