Certains sites, comme StackExchange, affichent un message "Êtes-vous sûr de vouloir quitter cette page?" lorsque vous essayez de quitter sous certaines conditions, par exemple si vous avez une publication que vous n'avez pas terminé de modifier. C'est utile!
Malheureusement, les sites malveillants ou infectés aiment utiliser les mêmes fonctionnalités pour dire: « Hé! Vous n'avez pas installé notre logiciel malveillant antivirus pour traiter les 111 virus nous certainement pas mentir sur la recherche sur votre ordinateur! », Et « Laissez cette page "et" Restez sur cette page "les options sont remplacées par quelque chose comme" Soyez en sécurité. Installez notre produit "et" Tirez-vous dans le pied ". C'est inutile!
Javascript peut faire des choses désagréables. Lorsque j'obtiens une de ces boîtes de dialogue essayant de m'empêcher de quitter un site clairement malveillant, quelle devrait être ma réponse? Est-il sûr de cliquer sur "Quitter cette page" ou quoi que ce soit avec lequel ils ont remplacé le texte? Un site pourrait-il changer le comportement du bouton, ou intercepter ma tentative de navigation et dessiner sa propre fausse boîte de dialogue qui fait tout ce qu'un attaquant veut quand je clique dessus?
Réponses:
Malgré ce que disent certains de ces dialogues, ils ne peuvent rien faire de malveillant . Vous pouvez toujours cliquer sur OK ou Quitter la page pour fermer la page incriminée sans aucune conséquence.
Si la boîte de dialogue est trop longue et que les boutons sont hors de l'écran , vous pouvez appuyer surEnter pour confirmer la fermeture de la page.
Si vous n'avez pas de clavier (appareils à écran tactile), utilisez le bookmarklet ci-dessous ou consultez la réponse de SimpleSimon (Chrome uniquement).
Maintenant, quelques détails.
Il n'y a qu'une seule façon d'effectuer une action lors de la fermeture d'une page: à travers l'
onbeforeunload
événement. Bien sûr, cela pourrait être facilement utilisé contre l'utilisateur (par exemple quand il essaie de fermer une page, il ouvre sa copie dans une nouvelle fenêtre), donc c'est très limité.En fait, la seule chose raisonnable que vous pouvez faire est d'ouvrir une boîte de dialogue avec du texte personnalisé et deux boutons, un pour quitter la page et un pour rester. La seule chose qu'une page peut faire avec cette boîte de dialogue est de définir son texte. Les boutons et la barre de titre sont immuables. Voici une capture d'écran de Firefox 3.6: ( très ancienne version de Firefox)
Bien sûr, lorsque vous laissez les gens afficher des popups avec n'importe quel texte et juste OK / Annuler boutons , vous pouvez être sûr que tôt ou tard certains gars l'utiliseront contre vous.
Dans la capture d'écran ci-dessus, OK signifie simplement "Quitter cette page", mais la description personnalisée suggère quelque chose de plus. Les navigateurs ont donc modifié les boîtes de dialogue, il est donc plus difficile de les rendre trompeuses. Par exemple, les versions récentes de Firefox semblent ignorer le texte personnalisé:
Chrome affiche le texte personnalisé, mais ajoute toujours une question demandant à l'utilisateur ce qu'il veut faire et les boutons indiquent explicitement leurs actions: (mais il est toujours sujet aux messages "vidéos de chat"!)
Voici Internet Explorer 10, également «sujet aux chats»:
Opera 12 ignore simplement l'
onbeforeunload
événement et si vous essayez de fermer un onglet comme celui-ci, il se fermera comme les autres. Cependant, je n'ai pas testé le dernier opéra.Donc, pour résumer les choses les plus importantes:
Vous pouvez désactiver l'
onbeforeunload
événement si vous le souhaitez, empêchant efficacement les pages de vous demander de quitter ou de rester. Voici un script utilisateur multi-navigateur . (faites défiler vers le bas si le lien est mort)Si vous êtes sur un site Web spécifique qui affiche une fenêtre contextuelle malveillante et que vous avez toujours peur de cliquer sur Quitter , vous pouvez créer un bookmarklet pour le supprimer. Faites un clic droit sur votre barre de signets, choisissez Nouveau signet (ou équivalent) et collez-le comme URL: (c'est juste du code minifed du lien ci-dessus)
Cliquez ensuite sur ce signet et la fenêtre contextuelle sera temporairement supprimée de la page active.
Si vous souhaitez tester l'apparence de ces fenêtres contextuelles dans votre navigateur ou tester le bookmarklet / userscript, créez un fichier texte avec le code suivant et enregistrez-le en tant que
.html
fichier:Il semble que le lien userscript soit mort en ce moment, alors voici une copie extraite du cache archive.org . Tous les crédits pour le créateur du script original.
la source
En fait, FireFox a une solution plutôt astucieuse (et facile). Si vous tapez
dans la barre d'adresse, puis faites défiler
et définissez sa valeur sur True, vous ne verrez plus les fenêtres contextuelles Quitter la page. Dans FireFox. Dommage qu'il n'y ait pas de solution de contournement similaire dans Chrome.
la source
La solution la plus simple dans Chrome consiste à planter l'onglet.
Tapez chrome: // crash dans la barre d'adresse et enregistrez-le en tant que signet .
La prochaine fois que vous souhaitez quitter une telle page, cliquez simplement sur le signet et il tuera cet onglet instantanément, sans affecter vos autres onglets. Pas besoin de tuer toute la session du navigateur comme certains l'ont suggéré.
Alternativement, vous pouvez accrocher l'onglet à l'aide de chrome: // hang, puis fermez simplement l'onglet sans exécuter de JavaScript.
Je ne sais pas si cela est possible dans d'autres navigateurs.
la source
Il s'agit de l'événement window.onbeforeunload et d'une fonctionnalité du navigateur Web. Il devrait donc s'agir d'une boîte de dialogue fixe du navigateur Web. Vous pouvez essayer dans différents navigateurs et pour que vous puissiez voir, les boîtes de dialogue sont de conceptions différentes.
Mais je suppose que vous pourriez développer une popup avec javascript, qui ressemble très très similaire à la popup d'origine de celle du navigateur. Et si c'est un bon développeur, il vérifiera également le type de navigateur avant d'afficher la boîte de dialogue. ;)
Donc, pour être très sûr d'une boîte de dialogue originale, vous devez vérifier en parallèle la bonne boîte de dialogue, c'est-à-dire ici: http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/onbeforeunload.htm
Voir ici pour plus d'informations sur l'événement:
https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeunload
http://msdn.microsoft.com/en-us/library/ms536907% 28VS.85% 29.aspx
la source
Solution rapide si vous ne faites pas confiance au "popup" et à ses intentions / actions:
Pour Chrome:
Échapper pour supprimer la fenêtre contextuelle
Clic droit sur la page
Sélectionnez Inspecter
Faites défiler vers le haut
Clic droit sur la balise
Supprimer le nœud
Fermer l'onglet
Je suis sûr que les autres navigateurs ont des options similaires.
la source