2009-10-22 9 views
1

Dans IE7, une fenêtre enfant ouverte avec window.open peut se fermer en utilisant window.close(), mais une fenêtre ouverte avec < a href = ... target = _blank> affichera un avertissement de sécurité si la fenêtre enfant essaie de se fermer.Savoir si window.close() affichera un avertissement de sécurité

Dans mon application, je ne sais pas comment ma fenêtre enfant est ouverte, et j'ai besoin de savoir (dans le code javascript de la fenêtre enfant) si je peux utiliser window.close() ou non. Y a-t-il un moyen? Une autre façon de poser la question est - est-il possible dans IE de différencier une fenêtre ouverte via window.open d'une fenêtre ouverte via target = _blank.

J'ai essayé de vérifier window.opener mais dans les deux cas il y a une valeur, donc cela ne me permet pas de différencier les deux cas.

Répondre

0

Source: Close window without the prompt message in IE7

Voici comment éviter l'invite en fonction de la page ci-dessus:

function WinClose(){window.open('','_self','');window.close();}

<a href="#" onclick="WinClose();return false;">Close</a>

Est-ce une approche possible pour votre page?

+0

Cela fonctionne. Merci. J'ai maintenant d'autres problèmes qui sont spécifiques à IE8, mais je suppose que je vais le poster dans une autre question. – giltayar

0

Juste un coup aveugle, mais vous pouvez essayer de supprimer l'événement onunload dans la fenêtre, au cas où il est là.

+0

Vous êtes un génie! Je n'aurais jamais pensé que c'était si simple de supprimer l'avertissement. Cela fonctionne dans IE8 au moins. Va vérifier dans IE7 aussi. – giltayar

+0

Non. Ma faute. J'ai probablement espéré que ça fonctionne, mais ce n'est pas le cas. BTW, l'événement onunload se produit APRÈS l'avertissement window.close arrive. – giltayar

0

Si vous contrôlez les événements window.open, vous pouvez donner un nom à la nouvelle fenêtre (2ème paramètre je pense). Vous pouvez ensuite vérifier ce nom avant d'appliquer window.close().

+0

Oui, cela fonctionne, sauf que je n'ai pas de contrôle sur l'ouverture! – giltayar

1

Essayez de comparer window.opener et window.self

+0

Malheureusement, window.opener dans les deux cas est le bon, c'est-à-dire la fenêtre parent qui a ouvert cette fenêtre enfant. – giltayar

Questions connexes