是e =事件|| window.event; IE8兼容性可接受

时间:2013-05-28 20:23:26

标签: javascript javascript-events

此代码(取自this post)阻止我在尝试使用Error: 'null' is null or not an object

时在IE8中收到错误消息(preventDefault()
$(document).ready(function () {
    $("#submitBtn").on("click", pD(event));
});

function pD(e) {
    e = event || window.event;
    if (e.preventDefault) {
        e.preventDefault();
    } else {
        e.returnValue = false;
    }
}

似乎有效。然而,this post中的评论(第四次评论)让我担心这可能是一种不好的方法。它在某种程度上是可接受的还是不可接受的?评论的语言非常强烈,所以这让我很好奇。

1 个答案:

答案 0 :(得分:10)

首先,您分配点击处理程序的方式不正确:

$("#submitBtn").on("click", pD(event));

您正在调用 pD()函数并将其返回值传递给.on()方法。您只需要传递对函数的引用:

$("#submitBtn").on("click", pD);

其次,您正在使用jQuery,因此您不需要测试e参数并将其设置为window.event,因为jQuery会为您处理这些兼容性问题。你可以使用e.preventDefault()知道jQuery会让它成为现实。