Javascript IE错误:'target'为null或不是对象

时间:2012-11-12 02:03:20

标签: javascript internet-explorer javascript-events

document.onkeydown = function(event) {
    var tagName = event.target.tagName;
    if (tagName != 'INPUT' && tagName != 'TEXTAREA' && !event.alt && event.control) {

        if (event.ctrlKey && event.keyCode == 37) {
            if (_this.currentPage > 1) {
                window.location.href = _this.baseUrl.replace(/%page%/i, _this.currentPage + 1);
            }
        } else if (event.ctrlKey && event.keyCode == 39) {
            if (_this.currentPage < _this.pagesTotal) {
                window.location.href = _this.baseUrl.replace(/%page%/i, _this.currentPage - 1);
            }
        }
    }
}

这只在IE 8中出现错误:

'target'为null或不是对象

该行var tagName = event.target.tagName;

如何解决这个问题。按Ctrl或箭头按钮时发生错误。

2 个答案:

答案 0 :(得分:5)

IE不会将event对象传入事件处理程序。相反,它们使用event对象的全局window属性。因此,对于IE,您可以使用window.event代替。

通常首先测试提供的参数。您还必须考虑IE使用srcElement而不是target这一事实。为了解释这一切,请使用类似的内容:

document.onkeydown = function(event) {
    event = event || window.event;
    var tagName = (event.target || event.srcElement).tagName;
    // Keep up the good work...
}

这应该可以解决问题。

答案 1 :(得分:3)

这样做:

event = event || window.event;
var tagName = (event.target || event.srcElement).tagName.toUpperCase();