Mon code fonctionne très bien dans FF/Chrome/Tout sauf IE (échoué à la fois dans 7/8, n'a pas pris la peine d'aller plus bas). En raison de restrictions, je ne peux pas utiliser jQuery et je suis en train de coder en dur le Javascript. Le problème est avec IE, je reçois "preventDefault est nul ou pas un objet". Dans l'espoir de vous a la réponse, et voici le code pertinent:Javascript: IE event.preventDefault est nul ou pas un objet
AddEvent Méthode:
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);
};
Gestionnaire d'événements lancer erreur:
function mousedown(e){
if(e.preventDefault){
e.preventDefault();
} else {
e.returnValue = false;
e.cancelBubble=true;
}
//Processing
};
DOCTYPE aussi et charset sont tous deux sur l'appelant HTML page. Toute idée serait appréciée. L'erreur est renvoyée dans l'instruction if de la méthode mousedown.
EDIT:
En raison du fait que l'accaparement window.event ne « fixer » la question principale, j'ai découvert le problème était une autre section de code. Fondamentalement, j'ajoute un élément sur un élément pré-placé, puis en enregistrant les événements mousedown/mousemove dans ce div. Lors du déclenchement de l'événement sur le <div>
, c'est là que l'erreur est levée.
Serait-ce quelque chose en raison du fait que j'ai des événements enregistrés à 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);
Il doit y avoir autre chose ici. vos deux méthodes js fonctionnent bien pour une démo rapide que j'ai mis en place et essayé avec IE8. Pouvez-vous le plus un exemple plus complet avec erreur reproductible? – lincolnk
Avez-vous essayé de vérifier 'typeof e' et' typeof e.preventDefault'? –
L'exemple de code tel quel ne provoquerait pas l'erreur "event.preventDefault est null ou un objet". Pour un, vous ne référencez pas "événement" dans votre gestionnaire, mais plutôt "e". –