2010-10-13 6 views
1

Je suis en train de faire quelque chose comme çaIE7 window.open lorsque .focus return null

win = null; 
win = window.open('/url/to/link','tab'); 
win.focus(); 

mais dans IE7 il me retourne à la ligne de win.focus(); l'erreur qui gagne est nulle.

Comment puis-je le résoudre?

Merci d'avance!

+0

La fenêtre s'ouvre-t-elle? Dans tous les cas, cela ne fonctionnera pas pour Firefox, Chrome et Safari. En général, ils ne permettent pas à une fenêtre de forcer une autre fenêtre à se concentrer. – Pointy

Répondre

1

Vous pouvez essayer d'ajouter un léger retard pour vous assurer que la fenêtre est ouverte

//win = null; <--useless 
win = window.open('/url/to/link','tab'); 
if(win)window.focus(); 
else{ 
    var timer = window.setTimeout(function(){ if(win)win.focus(); }, 100); 
} 

Ce jour en âge, la plupart des gens évitent les fenêtres pop-up et utilisent des couches modales.

2

Blockquote < Valeur de retour

Renvoie une référence au nouvel objet de la fenêtre. Utilisez cette référence pour accéder aux propriétés et méthodes de la nouvelle fenêtre.

Internet Explorer 7 sur Windows Vista: L'ouverture d'une nouvelle fenêtre à partir d'une application (autre que le processus Internet Explorer) peut entraîner une valeur de retour nulle. Cette restriction se produit car Internet Explorer s'exécute en mode protégé par défaut. Une facette du mode protégé empêche les applications d'avoir un accès privilégié à Internet Explorer lorsque cet accès couvre les limites du processus. Ouvrir une nouvelle fenêtre en utilisant cette méthode génère un nouveau processus. Pour plus d'informations sur le mode protégé, consultez la rubrique Présentation et fonctionnement dans Internet Explorer protégé. Cela se produit généralement pour les applications qui hébergent le contrôle WebBrowser.> Window.Open method documentation

+0

bonne trouvaille, merci de poster ceci – Drew

+0

Qu'est-ce que c'est 'Blockquote

+0

Cette première ligne devrait indiquer "Return Value". Il s'agit simplement d'une référence au paragraphe à mi-chemin de la page auquel j'ai lié dans la documentation, ce qui explique pourquoi "Return Value" peut être nul. – smirkingman

0

Lorsque vous lancez un popup, donnez-lui un nom de variable:

myWin = window.open(etc) 

//in the child window, call window.opener.myFocusFunction() 
//in the parent window, use this... 

function myFocusFunction(){ 
    myWin.focus(); 
    //myWin.blur(); 
    //uncomment as needed! 
} 

Avoir un jeu, ça marche pour moi.