Comment puis-je fermer une fenêtre de navigateur sans recevoir l' invite Voulez-vous fermer cette fenêtre ?
L'invite se produit lorsque j'utilise la window.close();
fonction.
Comment puis-je fermer une fenêtre de navigateur sans recevoir l' invite Voulez-vous fermer cette fenêtre ?
L'invite se produit lorsque j'utilise la window.close();
fonction.
Réponses:
window.open('', '_self', ''); window.close();
Cela fonctionne pour moi.
showModalDialog
? Cela ne fonctionne pas sur IE10
Mon ami ... il y a un moyen mais "hack" ne commence pas à le décrire. Vous devez essentiellement exploiter un bogue dans IE 6 et 7.
Fonctionne à chaque fois!
Au lieu d'appeler window.close()
, redirigez vers une autre page.
Page d'ouverture:
alert("No whammies!");
window.open("closer.htm", '_self');
Redirigez vers une autre page. Cela trompe IE en vous laissant fermer le navigateur sur cette page.
Page de clôture:
<script type="text/javascript">
window.close();
</script>
Génial hein?!
Les scripts ne sont pas autorisés à fermer une fenêtre ouverte par un utilisateur. Ceci est considéré comme un risque de sécurité. Bien que ce ne soit dans aucune norme, tous les fournisseurs de navigateurs le suivent ( Mozilla docs ). Si cela se produit dans certains navigateurs, c'est un bogue de sécurité qui (idéalement) est corrigé très rapidement.
Aucun des hacks dans les réponses à cette question ne fonctionne plus, et si quelqu'un proposait un autre hack sale, il cessera finalement de fonctionner également.
Je vous suggère de ne pas gaspiller d'énergie à lutter contre cela et d'adopter la méthode que le navigateur vous donne si utilement - demandez à l'utilisateur avant que vous ne plantiez apparemment sa page.
Voici la fonction Javascript que j'utilise pour fermer le navigateur sans invite ni avertissement, elle peut également être appelée depuis Flash. Il devrait être dans un fichier html.
function closeWindows() {
var browserName = navigator.appName;
var browserVer = parseInt(navigator.appVersion);
//alert(browserName + " : "+browserVer);
//document.getElementById("flashContent").innerHTML = "<br> <font face='Arial' color='blue' size='2'><b> You have been logged out of the Game. Please Close Your Browser Window.</b></font>";
if(browserName == "Microsoft Internet Explorer"){
var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;
if (ie7)
{
//This method is required to close a window without any prompt for IE7 & greater versions.
window.open('','_parent','');
window.close();
}
else
{
//This method is required to close a window without any prompt for IE6
this.focus();
self.opener = this;
self.close();
}
}else{
//For NON-IE Browsers except Firefox which doesnt support Auto Close
try{
this.focus();
self.opener = this;
self.close();
}
catch(e){
}
try{
window.open('','_self','');
window.close();
}
catch(e){
}
}
}
showModalDialog
. Activé closeWindows
, il ouvre une nouvelle fenêtre (la même page) alors que la précédente est toujours ouverte.
Cela fonctionne dans Chrome 26, Internet Explorer 9 et Safari 5.1.7 ( sans l'utilisation d'une page d'aide, ala réponse de Nick):
<script type="text/javascript">
window.open('javascript:window.open("", "_self", "");window.close();', '_self');
</script>
L'imbrication window.open
consiste à empêcher IE d'afficher l' invite Voulez-vous fermer cette fenêtre .
Malheureusement, il est impossible de faire fermer la fenêtre par Firefox.
Dans la balise body:
<body onload="window.open('', '_self', '');">
Pour fermer la fenêtre:
<a href="javascript:window.close();">
Testé sur Safari 4.0.5, FF pour Mac 3.6, IE 8.0 et FF pour Windows 3.5
Pour des raisons de sécurité, une fenêtre ne peut être fermée en JavaScript que si elle a été ouverte par JavaScript. Pour fermer la fenêtre, vous devez ouvrir une nouvelle fenêtre avec _self
comme cible, qui écrasera votre fenêtre actuelle, puis fermez celle-ci (ce que vous pouvez faire depuis son ouverture via JavaScript).
window.open('', '_self', '');
window.close();
D' ici :
<a href="javascript:window.opener='x';window.close();">Close</a>
Vous devez vous mettre window.opener
à quelque chose, sinon il se plaint.
window.open('', '_self', '').close();
Désolé un peu tard ici, mais j'ai trouvé la solution, du moins pour mon cas. Testé sur Safari 11.0.3 et Google Chrome 64.0.3282.167
En raison des améliorations de sécurité dans IE, vous ne pouvez pas fermer une fenêtre à moins qu'elle ne soit ouverte par un script. Le moyen de contourner ce problème sera donc de laisser le navigateur penser que cette page est ouverte à l'aide d'un script, puis de fermer la fenêtre. Voici la mise en œuvre.
Essayez ceci, cela fonctionne comme un charme!
javascript ferme la fenêtre actuelle sans invite IE
<script type="text/javascript">
function closeWP() {
var Browser = navigator.appName;
var indexB = Browser.indexOf('Explorer');
if (indexB > 0) {
var indexV = navigator.userAgent.indexOf('MSIE') + 5;
var Version = navigator.userAgent.substring(indexV, indexV + 1);
if (Version >= 7) {
window.open('', '_self', '');
window.close();
}
else if (Version == 6) {
window.opener = null;
window.close();
}
else {
window.opener = '';
window.close();
}
}
else {
window.close();
}
}
</script>
Créer une fonction JavaScript
<script type="text/javascript">
function closeme() {
window.open('', '_self', '');
window.close();
}
</script>
Maintenant, écrivez ce code et appelez la fonction JavaScript ci-dessus
<a href="Help.aspx" target="_blank" onclick="closeme();">Help</a>
Ou simplement:
<a href="" onclick="closeme();">close</a>
Cela fonctionnera:
<script type="text/javascript">
function closeWindowNoPrompt()
{
window.open('', '_parent', '');
window.close();
}
</script>
window.opener=window;
window.close();
Placez le code suivant dans ASPX.
<script language=javascript>
function CloseWindow()
{
window.open('', '_self', '');
window.close();
}
</script>
Placez le code suivant dans le code derrière l'événement de clic sur le bouton.
string myclosescript = "<script language='javascript' type='text/javascript'>CloseWindow();</script>";
Page.ClientScript.RegisterStartupScript(GetType(), "myclosescript", myclosescript);
Si vous n'avez aucun traitement avant la fermeture, vous pouvez directement placer le code suivant dans l'ASPX lui-même dans la balise de clic du bouton.
OnClientClick="CloseWindow();"
J'espère que cela t'aides.
Dans ma situation, le code suivant a été intégré dans un fichier php.
var PreventExitPop = true;
function ExitPop() {
if (PreventExitPop != false) {
return "Hold your horses! \n\nTake the time to reserve your place.Registrations might become paid or closed completely to newcomers!"
}
}
window.onbeforeunload = ExitPop;
J'ai donc ouvert la console et écrit ce qui suit
PreventExitPop = false
Cela a résolu le problème. Alors, découvrez le code JavaScript et trouvez la ou les variables et attribuez-leur une "valeur" appropriée qui dans mon cas était "fausse"
Je vais publier ceci car c'est ce que j'utilise actuellement pour mon site et cela fonctionne à la fois dans Google Chrome et IE 10 sans recevoir de messages contextuels:
<html>
<head>
</head>
<body onload="window.close();">
</body>
</html>
J'ai une fonction sur mon site que je souhaite exécuter pour enregistrer une variable d'activation / désactivation dans la session sans accéder directement à une nouvelle page, je viens donc d'ouvrir une petite page Web contextuelle. Cette page Web se ferme alors immédiatement avec la onload="window.close();"
fonction.
a
with target=_blank
pour ouvrir une petite fenêtre contextuelle à une URL spécifique, puis j'utilise finalement JS pour fermer la fenêtre. Son but est que l'URL spécifique enregistre une valeur dans la session pour désactiver les images d'arrière-plan, bien que je la supprimerai bientôt en faveur d'ajax une fois que j'aurai compris comment faire ajax. (toujours en train d'apprendre les ficelles du métier)
window.open('','_self').close()