Recuperer valeur du lien seelctionné dans un onunload

cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011 - 3 août 2009 à 13:23
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011 - 4 août 2009 à 10:19
Bonjour,
J'ai un lien sur une page permettant d'afficher un contenu en plein ecran dans une nouvelle page.
Une fois cette nouvelle page affiché, j'ai besoin de pouvoir récuperer la valeur du lien demandé.
Ainsi via le clic je pourrai refermer cette page et établir la redirection sur la page parent.
Je ne peux pas modifier le code du contenu en plein écran.
J'ai donc pensé a faire un onunload="parent.opener.location.reload();window.close();" qui fonctionne bien
mais qui bien sur ne rafraichi que la page d'origine. il me faudrai un parent.opener.location="lien demandé"

Merci pour votre aide.

23 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
3 août 2009 à 13:44
Bonjour,

je ne vous suis pas bien sur ce coup là....

>>J'ai un lien sur une page permettant d'afficher
>>un contenu en plein ecran dans une nouvelle page.
avec window.open donc si on lit la suite

>>Une fois cette nouvelle page affiché, j'ai besoin
>>de pouvoir récuperer la valeur du lien demandé.
ben ??? vous l'avez non ?
dans le pop-up c'est la page elle même
dans la page mère c'est le href ( ou je ne sais quoi )

>>Ainsi via le clic je pourrai refermer cette page
>>et établir la redirection sur la page parent.
>>Je ne peux pas modifier le code du contenu en plein écran.
euh... quelle redirection ?
si vous ne pouvez pas agir sur la source du pop-up,
il ne vous reste que la page mère alors
donc... ne la refermez pas ! sinon c'est foutu

>>onunload="parent.opener.location.reload();window.close();" >>qui fonctionne bien
certes... mais c'est dans le pop-up ça ? non ?

>>mais qui bien sur ne rafraichi que la page d'origine.
euh... votre problème c'est quoi en fait ?
je me pomme un peu dans les explications.
rafraîchir la page mère ?
qui serait fermée ?

Cordialement [mon Site] [M'écrire] Bul
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
3 août 2009 à 14:00
Bonjour et merci pour l'interêt porté à mon problème.

J'ouvre donc une nouvelle page avec un window.open qui est sensé afficher une partie de la page parent en plein ecran.
sur cette nouvelle page je charge du contenu dynamique avec des liens du type [index.php?ps=3 toto]
Ce que je voudrai c'est que lorsqu'on click sur un lien la popup se ferme et la page d'origine suit le lien.
Or je ne peux pas modifier la forme du lien car les répercussions seraient trop importantes.
Le problème : dans cette configuration (sans modifier la forme des liens), comment charger la page parent avec le lien qui à été demandé ?
Comme je ne peux pas rajouter de onclick sur mon lien, j'ai pensé : récupérer la valeur du lien choisi dans un onunload et rediriger la page parent vers ce lien.

Esperant avoir été suffisement clair ;)
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
3 août 2009 à 14:03
Encore plus simple :

Comment récuperer l'url du lien cliqué dans un onunload.
Est ce possible ?
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
3 août 2009 à 14:24
navré... toujours pas sûr de comprendre...
>>Ce que je voudrai c'est que lorsqu'on click sur un
>>lien la popup se ferme et la page d'origine suit le lien
résumons :

le pop-up est ouvert
vous voulez le fermer
et changer la page actuelle par celle du pop-up

c'est ça ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
3 août 2009 à 14:25
>>Comment récuperer l'url du lien cliqué dans un onunload.
???? dans le onunload, c'est du javascript,
on y fait donc ce qu'on veut
mais... le lien cliqué : c'est quoi ?
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
3 août 2009 à 14:30
>>Comment récuperer l'url du lien cliqué dans un onunload.
???? dans le onunload, c'est du javascript,
on y fait donc ce qu'on veut
mais... le lien cliqué : c'est quoi ?

l'url du lien sur lequel l'utilisateur a cliqué.

en gros si toto clique sur [index.php?ps=2 lien]

Je veux recuperer dans onunload : index.php?ps=2
de cette maniere je pourrai faire suivre ce lien sur la page qui à generé le popup.

le pop-up est ouvert
vous voulez le fermer
et changer la page actuelle par celle du pop-up

c'est ça ?
c'est bien çà mais comme je ne peux pas modifier le code du lien (pour y ajouter un onclik par exemple), je pense que mon traitement doit s'établir lors du changement de page, soit dans le onunload
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
3 août 2009 à 14:51
>>l'url du lien sur lequel l'utilisateur a cliqué.
pas possible ??? je n'y aurais jamais songé tiens...

rien ne vous empêche de la mémoriser ce lien
donc le réutiliser...

quoique, comme vous dites :
>>je ne peux pas modifier le code du lien
>>(pour y ajouter un onclik par exemple)
vous ne pouvez rien faire alors ?
ni dans le pop-up ni, dans la page mère ?

>>dans le onunload
peut-être... mais comment connaître le lien cliqué
si vous ne pouvez agir ni dans le pop-up,
ni dans le lien ???

et pourquoi fermer le pop-up si c'est pour
mettre cette page dans la page mère ?
fermez la page mère et laissez le pop-up ouvert
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
3 août 2009 à 15:27
concrétement :
J'ai une page contenant un menu ainsi qu'un planning. L'idée était d'afficher le planning en plein écran dans une popup.
Or sur ce planning, il y a des rendez-vous avec des options : détails, modifier, annuler, etc.
Donc je voulais récuperer l'url du lien cliqué sur la popup pour la charger dans la page qui à génerée cette popup et non pas dedans.
Dans la popup, j'ai un header et un footer exprès (que je peux modifier) et je charge un appel sur une methode en php qui charge le planning, (methode que j'aimerai éviter de modifier)

Effectivement je pourrai faire l'inverse, charger le contenu dans la popup et fermer la fenetre mère, mais je ne trouvais pas cette manière très propre.

Etant donnée que le onunload s'execute apres le click sur un lien, je m'étais dit que je pourrai recuperer la valeur de ce lien et le faire se charger dans la page ayant servi a l'ouverture du popup.

>>l'url du lien sur lequel l'utilisateur a cliqué.
pas possible ??? je n'y aurais jamais songé tiens...
Selon vous, et dans l'etat actuel du code, c'est impossible ?

Je suis en train d'étudier une solution avec window.event qui serai pe plus adaptée à mon besoin.
Qu'en pensez vous ?
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
3 août 2009 à 15:47
>>je voulais récuperer l'url du lien cliqué sur la popup
vous ne pouvez pas modifier le pop-up dites vous,
ça ne va pas être simple alors,
sinon, foultitude de solutions bien entendu

>>window.event ou autre ( on peut par exemple
connaitre le dernier élément "touché" )
mais dans la page mère pour un évênement dans le popup ???

ce qui se passe dans le pop-up, la page mère ne
peut-être au courant que si le pop-up le lui dit.

>>...je ne trouvais pas cette manière très propre..
??? les autres approches ( avec pop-up
intouchable ) seront bien pire, voire
impossibles, me semble-t-il

même en remplaçant le pop-up par
un div caché qu'on montre quand il faut,
un iframe, ou ... pas simple de récupérer
une action "de l'autre coté" sans toucher
au code où l'on doit faire cette action.
enfin.. ça ne me vient pas comme ça,
peut-être pas assez de réflexion ?
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
3 août 2009 à 16:06
Je reprends parce que visiblement on ne se comprends pas.

dans ma popup, je peux modifier le header, cad rajouter du javascript si nécessaire dans les balises <head> ou
ce n'est que dans le body ou je charge ma methode (que je ne veux pas modifier)

pour améliorer la clarté du pb :
soit :
- si j'ai un lien de cette forme et que je clique dessus, y a t il un moyen de connaitre la valeur de ce lien (soit index.php en partant du principe que je ne connais pas l'url de ce lien à l'avance) si je fait un onunload="alert(url_du_lien);"
- si je rajoute qqchose du style
window.onclick = function() {
si c'est un lien qui est clique
parent.opener.location="url_de_ce_lien";
window.close();
}

Un grand merci pour votre aide, et votre patience.
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
3 août 2009 à 16:13
je chauffe =)

window.onclick = function(e) {
alert(e.target);
}

c 'est presque çà sauf qu il me renvoi [object HTMLImageElement] et non pas le lien qui entoure l'image.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
3 août 2009 à 16:32
on va y parvenir alors....

window.onclick=function(evt)
{ var target;
if ( "activeElement" in document)
{ target = document.activeElement; }
else { target = evt ? evt.explicitOriginalTarget : null; }
if ( target.tagName=="A" )
{ alert(target.href); }
}
pas testé, mais "pas loin"


ou alors regarder tous les éléments "A" de la page,
( getElementByTagName("A") ou "pas loin" )
et leur ajouter un onclick en dynamique
ce qui ne serait pas plus mal !
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
3 août 2009 à 16:40
Je viens de trouver une solution differente de la votre :)

function click2() {
alert(this); // me renvoie correctement l'url je peux donc faire ma redirection :)
}

function toload() {
for (i = 0; i < document.getElementsByTagName("a").length; i++){
if (document.layers) document.getElementsByTagName("a")[i].captureEvents(Event.click);
if (document.layers || document.all) document.getElementsByTagName("a")[i].onclick = click2;
if (document.addEventListener) document.getElementsByTagName("a")[i].addEventListener(\'click\', click2, true);
}
}

et dans le body onload="toload();"

Je vais tester votre méthode qui me semble plus simple
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
3 août 2009 à 16:45
Votre méthode fonctionne très bien avec firefox mais pas avec ie, je vais poursuivre dans cette direction.

UN GRAND MERCI POUR VOTRE AIDE PRECIEUSE !
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
3 août 2009 à 16:46
par exemple :

window.onload=function()
{ for ( var n=0; n<document.body.getElementsByTagName("A").length; n++)
{ document.body.getElementsByTagName("A")[n].onclick=function()
{ alert(this.href); }
}
}

"bien entendu", il vaudrait mieux utiliser
attachEvent() et/ou addEventListener()
pour ajouter la fonction onclick
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
3 août 2009 à 16:48
>>fonctionne très bien avec firefox mais pas avec ie,
ah... curieux, puisque je teste justement...
mais bon, il doit rester un je ne sais quoi
je ne sais où ( doctype par exemple )
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
3 août 2009 à 16:52
pour le test entre navigateurs
il vaut mieux utiliser l'évènement !

du style :
if (lab.attachEvent)
lab.attachEvent("onclick", siClick);
else lab.addEventListener("click", siClick, false);
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
3 août 2009 à 17:05
en fait le window.onclick n'est pas reconnu par ie...ni le window.onload d'ailleurs...

window.onclick=function(evt) {
alert('iiiiii');
}

n'affiche rien... et j'ai pas oublié l'upload ftp ;)

il faut utiliser : connect(window, "onload", setup);

"window.onclick doesn't work in IE either. Use something like connect(document, 'onclick', click); instead. "

sacré ie !

Je posterai le code final une fois terminé
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
3 août 2009 à 17:29
Voila ça fonctionne correctement :




function load_parent_url() {
parent.opener.location = this;
window.close();
}

function getLinkOnunload() {
for (i = 0; i < document.getElementsByTagName("a").length; i++){
var lab = document.getElementsByTagName("a")[i];
if (document.layers) lab.captureEvents(Event.click);
if (document.layers || document.all) lab.onclick = load_parent_url;
if (document.addEventListener) lab.addEventListener('click', load_parent_url, true);
}
}

C'était donc possible :)
Merci encore Bul3
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
3 août 2009 à 17:34
et pour l'autre méthode :

window.onclick pour FF
document.body.onclick pour IE


function trt(quoi)
{	if ( quoi.tagName=="A" )
{	alert(quoi.href);	}
}
if ("activeElement" in document) 
{	document.body.onclick=function(event)
{	trt(document.activeElement);	}
}
else	{	window.onclick=function()
{	var t = e ? e.explicitOriginalTarget : null; 
trt(t);
}
}


>>C'était donc possible :)
certes...
je n'avais pas compris quand vous vouliez le faire
0
Rejoignez-nous