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 :

Supprimer un window.opener


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Par défaut Supprimer un window.opener
    Bonjour à tous,

    voici mon souci :

    Je dois afficher un popup depuis une applet. J'utilise un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getAppletContext.showDocument
    en java. J'appelle une adresse de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javascript:window.open(...
    Jusque là très bien, ça marche. Par contre mon popup appelle une jsp (qui n'est pas à moi) et qui elle se sert du window.opener pour rafraîchir ma page principale en arrière plan quand je fais mon submit. Or je ne veux pas.

    Sachant que je ne peux pas modifier le contenu de cette jsp, j'essaye de spécifier mais cela me rafraîchit la fenêtre appelante en mettant null dedans.

    Y a-t-il un moyen de supprimer cette valeur de window.opener sans provoquer le rafraîchissement de ma fenêtre appelante?

    Par avance merci,

    Jean.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    opener est en lecture seule ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Par défaut
    Pourtant le modifier semble faisable dans la mesure où un a bien un effet sur ma fenêtre appelante.

    Une modification du window.opener.location serait aussi une bonne solution, mais le problème est le même : cela entraine, et c'est bien normal, la modification de la fenêtre appelante.

    C'est précisément ce que je voudrais éviter...

    PS : je suis sous IE 8 32 bits et Windows 7 64 bits, si ça peut aider.

  4. #4
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par jeanvalery Voir le message
    Sachant que je ne peux pas modifier le contenu de cette jsp, j'essaye de spécifier mais cela me rafraîchit la fenêtre appelante en mettant null dedans..
    je n'ai pas tout compris, tu tente de faire window.opener=null depuis la page principale ou depuis la popup ?

    depuis la principale, ça n'aurait aucun sens vu que le opener doit être utilisé depuis le popup pour accèder à la principale.

    et depuis le popup tu dis toi même que tu n'as pas accès à la page.

    aussi si la page cible du popup ne t'appartient pas, elle est donc sur un domain différent non ? dans ce cas il me semble que les navigateurs empeche l'accès au opener. donc je ne comprend pas comment elle peut modifier ta page principale.

    bref, plus de détails nous aiderait à mieux t'aider.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 22
    Par défaut
    En fait dans ma page principale j'ai une applet, dans cette applet j'appelle l'url suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javascript:var toto=window.open("uneJsp.jsp");toto.opener=null
    Du moins c'est un peu dans l'idée ce que j'essaye de faire. Je ne veux pas que la fenêtre nouvellement ouverte (toto) se souvienne de son opener. Sauf que opener c'est une référence vers la fenêtre principale et pas une variable de toto et que la passer à null m'affiche un null dans ma fenêtre appelante.

    Ce que je veux c'est que par exemple toto.opener ou toto.opener.location me renvoie null, ou rien ou une url qui n'existe pas, pour que la jsp que j'affiche n'ait pas accès à cette donnée. Voilà, j'espère avoir été assez clair.

    Merci en tout cas!

  6. #6
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    Citation Envoyé par jeanvalery Voir le message
    En fait dans ma page principale j'ai une applet, dans cette applet j'appelle l'url suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javascript:var toto=window.open("uneJsp.jsp");toto.opener=null
    Du moins c'est un peu dans l'idée ce que j'essaye de faire. Je ne veux pas que la fenêtre nouvellement ouverte (toto) se souvienne de son opener. Sauf que opener c'est une référence vers la fenêtre principale et pas une variable de toto et que la passer à null m'affiche un null dans ma fenêtre appelante.

    Ce que je veux c'est que par exemple toto.opener ou toto.opener.location me renvoie null, ou rien ou une url qui n'existe pas, pour que la jsp que j'affiche n'ait pas accès à cette donnée. Voilà, j'espère avoir été assez clair.

    Merci en tout cas!
    je viens de tester sous IE9 et chrome 15 et ton code fait bien ce que tu souhaites.

    IE9 en mode IE8 donne aussi "null" pour l'opener dans le popup.



    edit: ok, je viens de comprendre, tu as sans doute utiliser des liens (<a>) de manière SALE.

    // injection javascript
    <a href="javascript:blablabla;" >lien</a>

    // au lieu de la manière propre :
    <a href="#" onclick="blablabla;return false;">lien</a>

    // si néanmoins tu veux garder la manière sale pour une raison obscure, tu dois alors rajouter un "void 0" en fin de code sinon l'injection attribuera au body(ou au document?) la dernière valeur retournée par ton injection :
    <a href="javascript:blablabla;void 0;" >lien</a>

    en espérant avoir résolu ton problème qui n'avait rien à voir avec les popup, opener, ni tout ça. :-)


    edit2: pour l'explication complète du void 0; l'instruction void fait que l'instruction qui suit ne retourne rien, et si lors de l'injection par url, la valeur retournée est rien, alors ça n'affecte pas le body(document?).

    la valeur de retour d'une série d'instructions est la valeur de retour de la dernière instruction, c'est pourquoi en placant une instruction supplémentaire en fin, c'est celle-là qui sera retournée.

    tu peux mettre n'importe quoi à la place du "0" qui n'affectera pas ton exécution. en fait, tu pourrais simplement placer ton "void" devant ta dernière vraie instruction ou encore englober toutes tes instruction de parenthèses et de placer un void devant, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    javascript:void(instruction1;instruction2;instruction3);
    javascript:instruction1;instruction2;void instruction3;
    javascript:instruction1;instruction2;instruction3;void 0; // 0 ou n'importe quoi d'autre
    reviennent un peu près tous au même.

Discussions similaires

  1. [pop-up] window.open ne marche pas sous IE...
    Par Palmic dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/05/2005, 15h47
  2. coordonnées d'une fenêtre avec window.open
    Par neecolas dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/05/2005, 09h08
  3. Problème de titre avec la fonction window.open
    Par kloss dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/04/2005, 18h34
  4. window.opener ____ perdu
    Par camyo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/02/2005, 16h01
  5. QueryString avec window.Open ??
    Par christine dans le forum ASP
    Réponses: 4
    Dernier message: 29/08/2003, 09h27

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