Maison > interface Web > js tutoriel > Pourquoi « window.close() » ne fonctionne-t-il pas dans Chrome et comment puis-je y remédier ?

Pourquoi « window.close() » ne fonctionne-t-il pas dans Chrome et comment puis-je y remédier ?

Linda Hamilton
Libérer: 2025-01-01 11:19:10
original
808 Les gens l'ont consulté

Why Doesn't `window.close()` Work in Chrome, and How Can I Fix It?

Window.close() échoue dans Chrome : une mesure de sécurité

Dans le domaine du développement Web, il a été observé que l'invocation de window .close() ou self.close() en JavaScript a cessé de fermer la fenêtre ciblée dans le navigateur Chrome. Ce comportement découle d'une mesure de sécurité cruciale mise en œuvre par Chrome pour empêcher les codes malveillants et les pop-ups non sollicités de compromettre l'expérience de navigation des utilisateurs.

La fermeture des fenêtres est principalement limitée aux scripts qui ont généré ces fenêtres. Chrome adhère étroitement à ce principe, interdisant les fermetures arbitraires par des scripts externes. Cependant, une exception notable à cette règle est disponible uniquement pour le JavaScript généré par l'auteur, permettant la fermeture des fenêtres créées par le même script.

Mise en œuvre plus stricte de Firefox

Firefox , d'autre part, applique une politique plus stricte, interdisant la fermeture de fenêtres à moins que le script appelant n'ait explicitement créé la fenêtre à l'aide de la méthode window.open(). Toute tentative de contournement de cette restriction entraîne des messages d'erreur dans Firefox, tandis que Chrome opte pour un échec silencieux.

Atténuations pour les utilisateurs de Chrome

Pour relever ce défi dans Chrome, l'exploit "auto-redirection" a déjà été exploité. Cependant, cette technique est devenue largement inefficace dans les versions actuelles du navigateur. Néanmoins, une version modifiée de la stratégie reste viable pour une utilisation dans un ensemble contraint de circonstances. En utilisant Tampermonkey avec une autorisation explicite @grant, window.close() peut toujours être utilisé pour fermer des onglets supplémentaires (le cas échéant) dans Chrome.

Pour les utilisateurs de Firefox, la seule solution viable consiste à désactiver la sécurité intégrée. paramètres dans le navigateur. Cependant, cette pratique est fortement déconseillée en raison des risques de sécurité accrus associés à des configurations de navigateur affaiblies.

Solution et améliorations à long terme

L'approche la plus efficace pour contourner ce problème. La limitation permanente est de développer une extension Chrome ou un module complémentaire Firefox. Ces mécanismes offrent des capacités fiables de fermeture de fenêtre. De plus, suggérer une telle fonctionnalité sous forme de demande de fonctionnalité aux responsables de Greasemonkey et Tampermonkey pourrait entraîner des améliorations supplémentaires et une implémentation simplifiée pour les auteurs de scripts utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal