gpt4 book ai didi

Javascript:IE event.preventDefault 为 null 或不是对象

转载 作者:行者123 更新时间:2023-11-29 16:28:09 24 4
gpt4 key购买 nike

我的代码在 FF/Chrome/除 IE 之外的所有设备中都可以正常工作(在 7/8 中都失败了,没有继续下去)。由于限制,我无法使用 jQuery,并且正在对 Javascript 进行硬编码。问题出在 IE 上,我收到“preventDefault 为 null 或不是对象”。希望你们中的一个人能找到答案,以下是相关代码:

添加事件方法:

function addEvent( obj, type, fn ) {  
if ( obj.attachEvent ) {
obj['e'+type+fn] = fn;
obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
obj.attachEvent( 'on'+type, obj[type+fn] );
} else
obj.addEventListener( type, fn, false );
};

事件处理程序抛出错误:

function mousedown(e){  
if(e.preventDefault){
e.preventDefault();
} else {
e.returnValue = false;
e.cancelBubble=true;
}
//Processing
};

此外,DOCTYPE 和字符集都在调用 HTML 页面上设置。任何想法,将不胜感激。该错误是在 mousedown 方法的 if 语句中抛出的。

编辑:

由于抓取 window.event 确实“修复”了主要问题,我发现问题出在代码的不同部分。基本上,我在预先放置的元素之上添加一个元素,然后将 mousedown/mousemove 事件注册到该 div。当在 <div> 上触发事件时,这就是抛出错误的地方。

这可能是由于我已将事件注册到 2

rect = document.createElement('div');  
rect.className='square';
rect.id='chooser_rectangle';
rect.style.left=initx+'px';
rect.style.top=inity+'px';

addEvent(rect,"mousemove",mousemove);
addEvent(rect,"mousedown",mousedown);

最佳答案

在 IE 中,事件对象不会作为第一个参数传递给事件处理程序。相反,它是一个全局变量:

function mousedown(e){
var evt = e || window.event; // IE compatibility
if(evt.preventDefault){
evt.preventDefault();
}else{
evt.returnValue = false;
evt.cancelBubble=true;
}
//Processing
};

关于Javascript:IE event.preventDefault 为 null 或不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3677748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com