2009-06-06 7 views
4

j'ai le scénario de suivi:window.open() renvoie undefined ou null sur le 2ème appel

je clique sur un lien qui: ouvre une fenêtre pop-up appelée « pop-up » qui charge un pdf à l'intérieur de celui-ci (dans IE6).

sans fermer la fenêtre, je clique sur le lien à nouveau, qui devrait rouvrir le pdf dans la fenêtre, mais une erreur javascript lancé: membre non trouvé

la fonction javascript utilisé pour ouvrir le menu contextuel est:

function openWindow(url, name, props) { 
    var windowRef = window.open(url, name, props); 
    if (!windowRef.opener) { 
    windowRef.opener = self; 
    } 
    windowRef.focus(); //error at this line, windowRef must be null 
    return windowRef; 
} 

question: comment puis-je contourner ce problème, sans ouvrir une nouvelle fenêtre à chaque fois?

+0

Yat-il un bloqueur de pop-up arrêter d'ouvrir la fenêtre? Mettez l'alerte (windowRef); après window.open, pour voir si l'objet est indéfini. – shahkalpesh

+0

Dans mon cas, http://stackoverflow.com/a/43313683/3793078 –

Répondre

7

c'est le hack qui fonctionne que tout le monde sur les internets utilise:

function openWindow(url, name, props) { 
    if(/*@[email protected]*/false){ //do this only in IE 
    var windowRef = window.open("", name, props); 
    windowRef.close(); 
    } 
    var windowRef = window.open(url, name, props); 
    if (!windowRef.opener) { 
    windowRef.opener = self; 
    } 
    windowRef.focus(); 
    return windowRef; 
} 
+0

Ne fonctionne pas correctement. C'est donner une erreur concernant 'ouvreur' ... –

4

essayez d'utiliser global var windowRef en dehors de la fonction openWindow(). Quelque chose comme ceci:

var WindowRef = null; 

function openWindow(url, name, props) { 
    if(WindowRef == null){ 
    WindowRef = window.open(url, name, props) 
    } 
    else{ 
    WindowRef.document.location = url 
    } 
    if (!WindowRef.opener) { 
    WindowRef.opener = self; 
    } 
    WindowRef.focus(); 
    return WindowRef; 
} 
+0

cela n'a pas fonctionné, WindowRef.document.location = url partie m'a donné une erreur d'accès refusé. – mkoryak

+0

est l'URL de dans le même domaine? –

Questions connexes