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或箭头按钮时发生错误。
答案 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();