95 votes

event.preventDefault () et return false (pas de jQuery)

Je me demandais si event.preventDefault() et return false étaient les mêmes.

J'ai fait quelques tests, et il semble que

  • Si le gestionnaire d'événement est ajouté à l'aide de vieux modèle, par exemple

    elem.onclick = function(){
        return false;
    };
    

    Ensuite, return false empêche l'action par défaut, comme event.preventDefault().

  • Si le gestionnaire d'événement est ajouté à l'aide de addEventListener, par exemple

    elem.addEventListener(
        'click',
        function(e){
            return false;
        },
        false
    );
    

    Ensuite, return false n'empêche pas l'action par défaut.

Tous les navigateurs web se comportent comme ça?

Il y a plus de différences entre event.preventDefault() et return false?

Où je peux trouver de la documentation (je ne pouvais pas en MDN) sur return false de se comporter en event.preventDefault() dans certains cas?


Ma question est seulement sur la plaine de javascript, pas de jQuery, donc merci de ne pas le marquer comme un double de l'événement.preventDefault() vs retour faux, même si les deux questions ont presque le même titre.

62voto

Tobo Points 1248

Le W3C Modèle d'Objet de Document Spécification d'Événements en 1.3.1. L'enregistrement d'un événement interfaces états qu' handleEvent dans l'EventListener n'a pas de valeur de retour:

handleEvent Cette méthode est appelée à chaque fois que se produit un événement de type pour ce qui de l'interface EventListener a été enregistré. [...] Pas De Retour Valeur

en vertu de l' 1.2.4. Cas d'Annulation le document précise également que

L'annulation est réalisée par l'appel de l'Événement preventDefault la méthode. Si un ou plusieurs EventListeners appel preventDefault pendant toute la phase de flux d'événements, l'action par défaut sera automatiquement annulée.

ce qui devrait vous dissuader de l'utilisation de tout effet que de retourner true / false pourrait avoir dans n'importe quel navigateur et utiliser event.preventDefault().

Je crois navigateur plus ancien ou nouveau navigateur en mode de compatibilité continuent d'utiliser l'ancienne - mais jamais défini, découvrez cette réponse par exemple) de la convention pour traiter l' return false comme event.preventDefault()

-3voto

Rahul Shinde Points 75

Différence entre preventDefault, stopPropogation, return false

Table Showing Difference

Action par défaut – côté Serveur de l'action lors de l'événement de contrôle d'augmenter.

Supposons que nous avons div contrôle et à l'intérieur, nous avons un bouton. Si la div est la société-mère de contrôle du bouton. Nous ont côté Client, cliquez sur et côté serveur événement click du bouton. Nous avons également côté client, cliquez sur l'événement de la div.

Sur l'événement click du bouton sur le côté client, on peut contrôler les actions de contrôle parent et côté serveur code à l'aide d'une des trois façons suivantes:

  • return false - Ce qui autorise uniquement côté client en cas de contrôle. Côté serveur de l'événement et côté client en cas de contrôle parent n'est pas déclenché.

  • preventDefault() - Ce qui autorise côté client en cas de contrôle et de son contrôle parent. Server side event de l'ie. Action par défaut du contrôle n'est pas déclenché.

  • stopPropogation() – Ce qui autorise côté client comme côté serveur cas de contrôle. Côté Client en cas de contrôle est interdit.

-12voto

ppy Points 9

return false est juste pour IE, event.preventDefault() est supporté par chrome, ff ... navigateurs modernes

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X