Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/12/2011, 10h48   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 22
Points : 3
Points : 3
Par défaut Supprimer un window.opener

Bonjour à tous,

voici mon souci :

Je dois afficher un popup depuis une applet. J'utilise un
Code :
getAppletContext.showDocument
en java. J'appelle une adresse de type
Code :
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.
jeanvalery est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 11h04   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 071
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 071
Points : 45 202
Points : 45 202
opener est en lecture seule ...
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 14h14   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 22
Points : 3
Points : 3
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.
jeanvalery est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 14h58   #4
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
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.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 17h09   #5
Invité de passage
 
Inscription : septembre 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 22
Points : 3
Points : 3
En fait dans ma page principale j'ai une applet, dans cette applet j'appelle l'url suivante :

Code :
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!
jeanvalery est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2011, 18h32   #6
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 872
Points : 1 381
Points : 1 381
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 :
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 :
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.
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h43.


 
 
 
 
Partenaires

Hébergement Web