2009-07-09 6 views
0

Je pense que mon titre était assez informatif. :)Quel est le moyen le plus compatible pour fermer une fenêtre enfant et notifier sa fenêtre parente dans JavaScript?

Je fermer la fenêtre enfant comme ceci:

self.close(); 

Juste avant cela, je veux la fenêtre parent savoir que l'enfant a fermé. Je me sers de cette:

window.opener.startLoad(); 

ci-dessus se déroulera une fonction qui est sur la fenêtre parent que je besoin de courir sur la fermeture de la fenêtre de l'enfant.

Cependant, cela m'a conduit à faire une erreur:

Permission denied to get property Window.startLoad 
window.opener.startLoad(); 

Même si je pouvais corriger cette erreur, on m'a dit qu'il peut être dû au fichier JavaScript étant dans un dossier différent et donc considéré comme un domaine différent. Cela fonctionnera-t-il dans tous les navigateurs? Sinon, existe-t-il une solution plus sûre, efficace et compatible dans tous les navigateurs?

Nous vous remercions de votre aide.

+0

dossier différent? sous-domaine peut-être, un dossier non. pouvez-vous donner un chemin example.com que le parent et l'enfant seraient dans? Le parent est-il rafraîchissant de quelque manière que ce soit? – epascarello

+0

Le parent n'est pas rafraîchissant mais effectue des requêtes AJAX. Le parent a son fichier js dans le dossier "./js" et l'enfant est dans le dossier "." avec ses js au même endroit. Je pense que cela ne fait pas beaucoup de différence puisque je l'ai vérifié en les plaçant dans le même répertoire, mais j'ai la même erreur! – Abs

Répondre

1

Cela devrait fonctionner tant que le popup provient du même domaine que le parent, sinon, en raison de restrictions de sécurité, il ne fonctionnera jamais. Le dossier n'est pas pertinent.

if (window.opener && window.opener.startLoad) 
{ 
    window.opener.startLoad(); 
} 
+0

Je toujours la même erreur. Pourquoi pensez-vous que le placer dans un conditionnel ferait une différence? Je n'essaie pas de vous interroger, j'essaie juste de comprendre votre logique. :) – Abs

+0

Je donnais plus juste le code que j'utilise qui vérifie un parent valide et la fonction. Cela fonctionne à moins qu'ils ne soient pas dans le même domaine - auquel cas vous obtenez cette erreur. Sont vôtres? – cdm9002

+0

Mes scripts sont sur le même domaine et même le même dossier. Toutefois, la fenêtre enfant lors de la première ouverture va à un autre site, puis est redirigé vers mon site puis se ferme. Ensuite, il essaie de déclencher une fonction de la fenêtre parent qui semble échouer. – Abs

0

Avec certains de mes pages de test Javascript, lorsque vous l'utilisez dans IE, il donne une erreur au niveau local, mais le téléchargement du fichier à l'Internet et à l'ouvrir à partir de là fonctionne. Peut-être que vous avez un étrange paramètre de sécurité qui ne vous permet pas de faire des demandes sur le même "domaine" en cours d'exécution à partir d'un fichier local. Essayez de mettre les pages sur un hébergeur et voir si cela fonctionne.

+0

Je viens de vérifier sur une autre machine avec un navigateur différent et j'obtiens la même erreur. La fenêtre enfant est redirigée d'un autre site vers mon site où réside le script JS, cette redirection pourrait-elle causer un problème? – Abs

+0

Oui, échoue en raison de la sécurité des scripts intersite. Vous devez ouvrir la fenêtre enfant depuis votre propre domaine. – cdm9002

+0

J'ouvre à partir de mon propre domaine, c'est juste que je redirige vers un site différent, puis de retour. Mais finalement j'ouvre la fenêtre de l'enfant. – Abs

Questions connexes