J'ai le scénario suivant:
Je clique sur un lien qui: ouvre une fenêtre contextuelle appelée 'popup' qui charge un pdf à l'intérieur de celui-ci (dans IE6).
Sans fermer le popup, je clique sur le lien à nouveau, ce qui devrait rouvrir le pdf dans le menu contextuel, mais plutôt une erreur de javascript lancée: membre introuvable
La fonction javascript utilisée pour ouvrir la fenêtre contextuelle 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 cela, sans ouvrir une nouvelle fenêtre contextuelle à chaque fois?
C'est le hack qui fonctionne que tous les internautes utilisent:
function openWindow(url, name, props) { if(/*@cc_on!@*/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; }
Essayez d'utiliser global var windowRef en dehors de la fonction openWindow (). Quelque chose comme ça:
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; }