recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Problème avec l'événement Onblur de zone de texte déclenché en continu

balise de texte onblur="alert()"
Alert() est déclenchée lorsque la zone de texte perd le curseur ;
Mais lorsque la souris sélectionne ce texte, la souris quitte toute la fenêtre du navigateur (comme en cliquant sur le bureau) , l'événement alert() est déclenché.
Voici maintenant le problème :
Après avoir renvoyé la souris sur le navigateur et cliqué sur le bouton contextuel "OK", la fenêtre contextuelle continue de s'afficher...
Que devrait-il se passer ? Je le fais ?

漂亮男人漂亮男人2823 Il y a quelques jours1103

répondre à tous(2)je répondrai

  • 怪我咯

    怪我咯2017-05-19 10:15:27

    Cela n'arrivera pas, merci de poster votre code.


    Supplément

    Si je peux y répondre, j'ai dû l'essayer. Il n'y aura aucun problème avec le code ci-dessous

    .
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <input type="text" onblur="alert();">
    </body>
    </html>

    A été testé sur IE11, Firefox et Chrome


    Supplément

    La situation décrite par

    existe bel et bien. Réfléchissons aux raisons :

    .

    Après le retour en arrière, la fenêtre perd le focus. Lorsqu'elle revient, la zone de texte prend automatiquement le focus, elle continue donc, se déclenchant ainsi en continu.

    Ce genre de problème devrait effectivement se produire moins souvent lors de l'utilisation. Une solution consiste à faire perdre le focus à la zone de texte lorsque la fenêtre perd le focus, comme suit :

    Problème testé résolu

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <input type="text" onblur="alert();">
        <script>
            window.onblur=function(){
                document.getElementsByTagName('input')[0].blur();
            }
        </script>
    </body>
    </html>

    répondre
    0
  • 黄舟

    黄舟2017-05-19 10:15:27

    Je viens de l'essayer, et cela existe. Cependant, si vous modifiez l'alerte par autre chose (comme console.log), le flou ne sera pas déclenché à plusieurs reprises. Dans des circonstances normales, l'alerte ne devrait pas être utilisée, donc ce problème devrait se produire. ne sera pas résolu. Cela n’aura pas un grand impact. Quant à savoir pourquoi cela se produit, je ne sais pas~~

    répondre
    0
  • Annulerrépondre