Donner une fenetre de fenêtre enfant dans IE8

J'essaie de lancer une fenêtre contextuelle à partir d'une fonction Javascript et assurez-vous qu'elle se concentre en utilisant l'appel suivant:

window.open(popupUrl, popupName, "...").focus();

Il fonctionne dans tous les autres navigateurs, mais IE8 laisse la nouvelle fenêtre en arrière-plan avec la notification de la barre des tâches orange clignotante. Apparemment, c'est une fonctionnalité de IE8:

Http://msdn.microsoft.com/en-us/library/ms536425(VS.85).aspx

Il dit que je devrais pouvoir focaliser la fenêtre en faisant un appel focus () provenant de la nouvelle page, mais cela ne semble pas fonctionner non plus. J'ai essayé d'insérer window.focus () dans les tags de script dans la page et la charge du corps, mais elle n'a aucun effet. Est-ce qu'il me manque quelque chose de faire un appel focus () lorsque la page est chargée, ou une autre façon de lancer une fenêtre pop-up que IE8 ne cachera pas?

L'IE8 ne permet pas cette fonctionnalité en raison des problèmes de sécurité

Windows Internet Explorer 8 et versions ultérieures. La méthode de mise au point n'apporte plus les fenêtres enfants (telles que celles créées avec la méthode ouverte) au premier plan. Les fenêtres enfants maintenant demandent la mise au point de l'utilisateur, généralement en clignotant la barre de titre. Pour amener directement la fenêtre au premier plan, ajoutez un script à la fenêtre enfant qui appelle la méthode de mise au point de son objet de fenêtre

http://msdn.microsoft.com/en-us/library/ms536425%28VS.85%29.aspx

Vous pourriez essayer cela. Je ne sais pas si cela fonctionnera bien>

 var isIE = (navigator.appName == "Microsoft Internet Explorer"); var hasFocus = true; var active_element; function setFocusEvents() { active_element = document.activeElement; if (isIE) { document.onfocusout = function() { onWindowBlur(); } document.onfocusin = function() { onWindowFocus(); } } else { window.onblur = function() { onWindowBlur(); } window.onfocus = function() { onWindowFocus(); } } } function onWindowFocus() { hasFocus = true; } function onWindowBlur() { if (active_element != document.activeElement) { active_element = document.activeElement; return; } hasFocus = false; } 

Ouais, je ne peux pas le tester sur IE8 pour le moment, mais j'ai une pièce avec cette méthode document.ready au lieu du body.onload:

Test1.html:

 <html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript"> function openNewWindow() { window.open("test2.html", null, "height=200, width=200"); } </script> </head> <body> <a onclick="openNewWindow()">Open</a> </body> </html> 

Test2.html:

 <html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ window.focus(); }); </script> </head> <body> <div id="container" style="background:blue;height:200px;width:300px"> </div> </body> </html> 

J'ai compris quel était le problème – résulte de la raison pour laquelle la fenêtre.focus () dans la charge ne fonctionnait pas était parce que le premier appel window.open (). Focus () l'a provoqué pour commencer à clignoter en arrière-plan et après Que tout appel ultérieur ne fonctionnerait pas. Si je n'essaye pas de le focaliser à partir de la fenêtre d'appel, mais seulement à partir du menu contextuel, il se déplace normalement. Quelle "caractéristique" ennuyeuse …

Le problème est que la méthode Window.focus ne fonctionne pas dans Internet Explorer 8 (IE 8). Ce n'est pas un bloqueur pop-up ou aucun paramètre dans IE 8 ou supérieur; C'est en raison d'une certaine sécurité, je crois que les pop-ups ennuyeuses risquent d'être ramenées au sommet.

Après beaucoup de cheveux et de googler, j'ai trouvé ce qui suit:

Microsoft suggère des mises à jour mais cela ne semble pas fonctionner plus comment s'attendent-ils sérieusement à demander à tous les utilisateurs de mon site de mettre à jour leurs machines!

J'ai donc trouvé ce travail autour ou réparé.

Ce que je fais avec la fenêtre est:

  1. D'abord, je vérifie si la fenêtre est ouverte
  2. Si elle est ouverte, fermez-la
  3. Ouvrez une nouvelle version fraîche de la fenêtre sur le dessus.

Code javascript à inclure dans l'en-tête ou dans un fichier distinct:

 function nameoflink() { var nameofwindow = window.open('pagetolinkto.htm','nameofwindow','menubar=1,resizable=1,width=350,height=250'); if (nameofwindow) { nameofwindow.close(); } window.open('pagetolinkto.htm','nameofwindow,'menubar=1,resizable=1,width=350,height=250'); return false; } 

Lien sur la page:

 <a href="#" onclick="nameoflink()">Click Here to go to name of link</a> 

Testé dans MS Windows 7 avec IE8 pas sûr de la version exacte.