Javascript IE错误:';目标';是否为null或不是对象 document.onkeydown=函数(事件){ 变量标记名=event.target.tagName; if(标记名!=“输入”&&tagName!=“文本区域”&&&&!event.alt&&event.control){ if(event.ctrlKey&&event.keyCode==37){ 如果(_this.currentPage>1){ window.location.href=_this.baseUrl.replace(/%page%/i,_this.currentPage+1); } }else if(event.ctrlKey&&event.keyCode==39){ 如果(_this.currentPage
这只在IE 8中给了我一个错误: “目标”为空或不是对象 对于该行Javascript IE错误:';目标';是否为null或不是对象 document.onkeydown=函数(事件){ 变量标记名=event.target.tagName; if(标记名!=“输入”&&tagName!=“文本区域”&&&&!event.alt&&event.control){ if(event.ctrlKey&&event.keyCode==37){ 如果(_this.currentPage>1){ window.location.href=_this.baseUrl.replace(/%page%/i,_this.currentPage+1); } }else if(event.ctrlKey&&event.keyCode==39){ 如果(_this.currentPage,javascript,internet-explorer,javascript-events,Javascript,Internet Explorer,Javascript Events,这只在IE 8中给了我一个错误: “目标”为空或不是对象 对于该行var tagName=event.target.tagName 如何解决这个问题。按下Ctrl或arrows按钮时出错。IE不会将事件对象传递到事件处理程序中。相反,它们使用窗口对象的全局事件属性。因此,对于IE,您应该使用window.event 通常的做法是先测试提供的参数。您还必须考虑IE使用srcElement而不是target这一事实。要解释所有这些,请使用类似的方法: document.onkeydown = fun
var tagName=event.target.tagName代码>
如何解决这个问题。按下Ctrl或arrows按钮时出错。IE不会将事件
对象传递到事件处理程序中。相反,它们使用窗口
对象的全局事件
属性。因此,对于IE,您应该使用window.event
通常的做法是先测试提供的参数。您还必须考虑IE使用srcElement
而不是target
这一事实。要解释所有这些,请使用类似的方法:
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);
}
}
}
}
这应该可以达到目的。这样做:
document.onkeydown = function(event) {
event = event || window.event;
var tagName = (event.target || event.srcElement).tagName;
// Keep up the good work...
}
事件。目标
在IE8中不存在。欢迎使用IE的旧事件系统。请给出一个如何修复的示例。使用第三方事件API可以解决跨浏览器不兼容的问题。这是我的建议。是的,但我对Javascript一窍不通。我需要一个改变的例子。有一秒钟,它看起来像是直接复制/粘贴。为什么要删除toUpperCase
?你知道我以前试过。这对我没有帮助。然后在下一行var tagName=event.target.tagName上给出相同的错误代码>@user1689607-我只是不认为人们应该仍然使用怪癖模式。我绝对希望OP使用的是正确的doctype
。AFAIK,在标准模式下,IE将返回大写的元素名称。有人纠正我,如果我错了。有几个边缘案件的IE(我不记得哪个版本)。谢谢!下面的附加答案解决了这个问题。同样的,它在下一行给出了相同的错误var tagName=event.target.tagName.toUpperCase()代码>。
event = event || window.event;
var tagName = (event.target || event.srcElement).tagName.toUpperCase();