IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Erreur sur un window.open lors du deuxième appel


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Points : 39
    Points
    39
    Par défaut Erreur sur un window.open lors du deuxième appel
    J'ai un problème bizarre sur un window.open.
    J'ai une page html qui a un bouton qui ouvre une popup et qui écrit le contenu d'un div dans la popup.
    Ma popup a une action de pop-in, ce qui permet de recopier le contenu du div dans la page principale et ensuite je ferme la popup.
    (Principe de Gmail Talk)

    Le principe marche mais qu'une seule fois. Lorsque je re-clique sur l'action de la fenêtre principale pour ouvrir une popup alors j'ai cette erreur :

    uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMJSWindow.open]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost:8080/Test/popup/pop...e/popupAjax.js :: pop_out :: line 6" data: no]

    Line 0
    voici mon javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    var divName = "divPopup";
     
    function pop_out() {
    	var properties="width=400,height=400,top=110,left=100,screenY=50,screenX=100,resizable=yes,scrollbars=yes,location=no"; 
    	var newWindow = window.open("templatePopup.html", "", properties); 
     
    	setTimeout(function(){
    		var divDest = newWindow.document.getElementById(divName);
    		var divSrc = document.getElementById(divName);
    		copyChilds(divSrc, divDest);
    	}, 500);
    }
     
    function copyChilds(divSrc, divDest) {
    	// suppression
    	while (divDest.childNodes.length > 0) {
    		divDest.removeChild(divDest.firstChild);
    	}
     
    	// copie
    	for(i = 0; i < divSrc.childNodes.length; i++)	{
    		divDest.appendChild(divSrc.childNodes[i].cloneNode(true));
    	}
    	// suppression
    	while (divSrc.childNodes.length > 0) {
    		divSrc.removeChild(divSrc.firstChild);
    	}
    }
     
    function pop_in() {
    	var divDest = parent.window.opener.document.getElementById(divName);
    	var divSrc = document.getElementById(divName);
    	copyChilds(divSrc, divDest);
    	window.close();
    }
    Quelqu'un aurait une idée ?
    Merci d'avance.

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    tu peux utiliser newWindow.document.write(script) au lieu du setTimeOut(), c'est peut-être ca qui fait planter ^^
    si j'ai bien compris tu t'en fous du délai, c'est juste pour mettre du code dans la pop-up ?

    [edit]lol les codes/messages erreurs FF c'est que du bohneur [edit]
    Vive les roues en pierre

  3. #3
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    je ne sais pas exactement ce qui plante (il me faudrait l'adresse de la page mère), mais ton système est forcément fragile:
    n'impose jamais un contrôle des éléments de la popup depuis la page mère: c'est de l'intérieur que tu dois appeler tes fonctions dhtml;
    c'est d'autant plus facile que ta popup a une adresse véritable, qu'elle est "préconstruite"; donc, aucun problème pour la faire interagir avec ta page ouvrante;

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Points : 39
    Points
    39
    Par défaut
    en fait, je fais un setTimeout car sinon ma page n'est pas chargée quand j'essaie de mettre des données dedans.

    je ne sais pas exactement ce qui plante (il me faudrait l'adresse de la page mère), mais ton système est forcément fragile:
    n'impose jamais un contrôle des éléments de la popup depuis la page mère: c'est de l'intérieur que tu dois appeler tes fonctions dhtml;
    c'est d'autant plus facile que ta popup a une adresse véritable, qu'elle est "préconstruite"; donc, aucun problème pour la faire interagir avec ta page ouvrante;
    Tu me conseilles de charger ma popup et sur le onLoad de la popup alors je récupère les données de la page mère pour les afficher dans ma popup ?
    merci

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Août 2006
    Messages : 53
    Points : 39
    Points
    39
    Par défaut
    j'ai trouvé d'où venait le problème mais je ne sais pas l'expliquer par contre.

    J'ai une fenêtre pricipale avec un bouton qui ouvre une popup. Qu'on je clique sur ce bouton, je copie le contenu d'un div dans la popup (soit avec un setTimeout ou sur une méthode onLoad de la popup). Le contenu du div de la fenêtre principale est donc supprimé comme le bouton. Le bouton est copié dans la popup mais est caché. Lorsque je fais un pop-in, je recopie le contenu du div (et le bouton en lui remettant sa visibilité) dans la fenêtre principale.
    Eh bien, c'est çà qui plante. Dès que je reclique dessus j'ai cette erreur bizzarre.

    J'espère que vous avez compris ce que j'ai dit

    QQn a une explication à ce phénomène ?

    Merci d'avance.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Détail sur un window.open
    Par zooffy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/05/2011, 16h26
  2. Erreur sur le window.close
    Par ricil78 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 15/06/2009, 15h19
  3. Réponses: 5
    Dernier message: 04/07/2008, 14h39
  4. erreur sur code "windows a renconteré une erreur"
    Par antoine0207 dans le forum Windows
    Réponses: 8
    Dernier message: 29/08/2006, 17h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo