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

use*_*131 3 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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这只在IE 8中出现错误:

'target'为null或不是对象

为那条线 var tagName = event.target.tagName;

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

Jos*_*ber 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...
}
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题.