javascript - Problème avec l'événement Onblur de zone de texte déclenché en continu
漂亮男人
漂亮男人 2017-05-19 10:13:27
0
2
1058

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 ?

漂亮男人
漂亮男人

répondre à tous(2)
刘奇

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>
黄舟

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~~

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal