2010-12-18 2 views
10

Internet Explorer ne prend pas en charge e.preventDefault en javascript. Sinon, quelle est la raison et quelles sont les alternatives. Merci de ne suggérer aucune réponse de jQuery, mootools.Internet Explorer prend-il en charge e.preventDefault

if (!e) e = window.event;

if (e.preventDefault) { 
    e.preventDefault(); 
} else { 
    e.returnValue = false; 
} 

+2

double possible de [fonction event.preventDefault() ne fonctionne pas dans IE. De l'aide?] (Http://stackoverflow.com/questions/1000597/event-preventdefault-function-not-working-in-ie-any-help) (drôle, c'était la première fois que l'on recherchait google pour 'event preventdefault in ie12) –

+1

@Felix Je suis plus enclin à comprendre pourquoi cela ne fonctionne pas et si c'est en quelque sorte lié au modèle d'événement IE.Moreover le lien parle plus de mootools et jQuery dans lequel je ne suis pas interessé –

+0

Mais la réponse acceptée n'est pas spécifique au cadre. –

Répondre

14

Ok si vous insistez:

event.preventDefault ne fonctionne pas, car il n'existe pas dans IE.

Pour la raison pour laquelle il n'existe pas, il faudrait travailler pour MS. Mais en général, IE n'est pas toujours conforme aux normes.

Le documentation dit que vous pouvez définir event.returnValue:

false
Action par défaut de l'événement sur l'objet source est annulée.

et plus:

Remarques

La valeur de cette propriété a la priorité sur les valeurs renvoyées par la fonction, comme par une déclaration de retour Microsoft JScript.

Normes d'information

Il n'y a pas de norme publique applicable à cette propriété.

preventDefault seems to be supported in IE9.

+1

J'utilise IE 7 et event.returnValue = false; aussi ne semble pas fonctionner.Ajouté mon code ci-dessus voir si vous pouvez signaler quelque chose. –

+1

@sushil bharwani: Vous devez faire 'if (e.preventDefault)' (sans parenthèse).Vous ne voulez pas appeler la fonction, vous voulez tester si elle est définie. –

+0

oh mon mauvais. tu es vraiment superbe !!! merci –

-5

Il ne supporte pas parce que quelqu'un dans Microsoft a décidé ainsi. L'alternative est event.cancelBubble.

+1

Est-ce que l'effacement des bulles empêche l'action par défaut? –

+2

Je ne pense pas que event.cancelBubble soit le remplacement de event.preventDefault ... il pourrait s'agir de e.stopPropogation. –