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 26/07/2011, 15h32   #1
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Par défaut Repérer le changement de page.

Salut,

J'aimerai lancer une fonction JavaScript quand les utilisateurs changent de page en cliquant sur un lien de la page.

J'ai repérer cette fonction:
Code :
1
2
3
4
5
 
window.onunload = unloadPage ;
function unloadPage() {
   alert("Nouvelle page en cours!");
}
Ca marche lorsque je clique sur un un lien mais cela ne marche pas si un utilisateur ouvre un lien dans une nouvelle fenetre ou nouvel onglet.

Comment je peux faire pour repérer un clique sur un lien qui dirige vers une autre page ou l'ouvre une nouvelle fenetre/onglet ?

Merci,
Vincent.
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 15h45   #2
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
en jquery, $("a").click(maFonction);
en DOM, boucle for sur getElementsByTagName("a"), puis element.onclick=maFonction

edit : désolé, j'ai répondu un peu vite. Ca dépend de ce que tu veux faire en fait.
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h13   #3
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Citation:
Envoyé par Sharcoux Voir le message
en jquery, $("a").click(maFonction);
en DOM, boucle for sur getElementsByTagName("a"), puis element.onclick=maFonction

edit : désolé, j'ai répondu un peu vite. Ca dépend de ce que tu veux faire en fait.
salut,

Le problème c'est que c'est pour repérer les clicks sur des pubs adsenses qui s'affichent donc dans une <iframe>

Le seul truc que j'ai trouvé c'est de mettre la pub adsense dans une div ou il y a un onmouseover qui met une variable à 1 et la met à 0 pour un onmouseout.

Ensuite, lancer la fonction javascript si cette variable est à 1 et que l'on quitte le site.

Ca marche dans avec le unloadPage si on ouvre la pub dans la fenetre courante mais cela ne marche pas dans le cas d'une ouverture de la pub dans une nouvelle fenetre...

Voici la div:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
< div id="DivCo" style="padding-bottom:0px;" onMouseOver="javascript:onCo=1;" onMouseOut="javascript:onCo=0;">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-xxx";
google_ad_slot = "xxx";
 
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
Et le javascript:
Code :
1
2
3
4
5
6
var onCo = 0 ;
function unloadPage() {
  if(onCo==1) {
   alert("Click sur la pub...");
  }
}
Mais je ne vois pas comment faire pour une ouverture dans une nouvelle page...
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h21   #4
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
Et tu as bien lancé unloadPage() depuis l'évènement click et pas unload ?
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h23   #5
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Citation:
Envoyé par Shikiryu Voir le message
Et tu as bien lancé unloadPage() depuis l'évènement click et pas unload ?
Oui oui, j'ai aussi ceci dans le code javascript:
Code :
window.onunload = unloadPage ;
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h26   #6
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
Citation:
Envoyé par defacta Voir le message
Code :
1
2
 
< div id="DivCo" style="padding-bottom:0px;" onMouseOver="javascript:onCo=1;"
et ça ?
Code :
1
2
 
< div id="DivCo" style="padding-bottom:0px;" onMouseOver="javascript:onCo=1;" onclick=unloadPage()>
ça marche pas qd la pub s'ouvre ailleurs, c'est ça que tu dis?
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h27   #7
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Citation:
Envoyé par defacta Voir le message
Oui oui, j'ai aussi ceci dans le code javascript:
Code :
window.onunload = unloadPage ;
D'ailleurs ce que je cherche c'est quelque chose de ce type: window.onopenwindow qui lancerait comme window.onunload la fonction unloadPage()...

Ca existe un window.onopenwindow ?
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h35   #8
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
Si j'ai bien compris, tu voudrais que ta page détecte si ta pub, placée dans une iframe, a ouvert un pop-up.

Si c'est ça, ça me parait difficile...
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 16h39   #9
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Citation:
Envoyé par Sharcoux Voir le message
Si j'ai bien compris, tu voudrais que ta page détecte si ta pub, placée dans une iframe, a ouvert un pop-up.

Si c'est ça, ça me parait difficile...
Et on peut repérer si il y a ouverture d'une nouvelle fenetre à partir de la page courante ?

C'est pour le cas ou la personne clique sur la pub mais l'ouvre dans une nouvelle fenetre...
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 11h09   #10
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Salut,

Pour l'instant la seule solution que j'ai trouvé c'est d'empecher le click droit sur cette iframe pour ne pas pouvoir faire un "Ouvrir le lien dans un autre onglet".

J'ai essayé ceci:
Code :
1
2
3
4
5
6
7
8
 
if(document.getElementsByTagName) {
 elements = document.body.getElementsByTagName("IFRAME");
}
for(var i = 0; i < elements.length; i++) {
  alert(elements[i].src) ;
  elements[i].oncontextmenu="return(false);" ;
}
Mais malheureusement ca ne marche pas !

J'ai alors essayé ceci:
Code :
  elements[i].document.oncontextmenu="return(false);" ;
Mais ca me renvoie un message d'erreur

Qqn aurait une idée pour ajouter "oncontextmenu" à une iframe depuis la page contenant cette iframe ?

Merci,
Vincent.
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 11h37   #11
Membre habitué
 
Homme
Étudiant
Inscription : mai 2011
Messages : 226
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 226
Points : 126
Points : 126
euh... Je dis peut-être une bêtise parce que je me plante une fois sur deux là-dessus, mais c'est pas plutot :
Code :
elements[i].oncontextmenu=function() {return false;} ;
?
C'est quoi le message d'erreur?
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 12h12   #12
Membre habitué
 
Inscription : mai 2004
Messages : 383
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 383
Points : 129
Points : 129
Citation:
Envoyé par Sharcoux Voir le message
euh... Je dis peut-être une bêtise parce que je me plante une fois sur deux là-dessus, mais c'est pas plutot :
Code :
elements[i].oncontextmenu=function() {return false;} ;
?
C'est quoi le message d'erreur?
Le message d'erreur est:
elements[i].document is undefined

J'ai essayé:
Code :
elements[i].oncontextmenu=function() {return false;} ;
mais cela n'empêche pas le menu du click droit
defacta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/07/2011, 12h29   #13
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Citation:
Le message d'erreur est:
elements[i].document is undefined
Ben oui... une balise iframe n'a pas de propriété document

Ceci dit, inutile de trop t'arracher les cheveux : tu ne pourras pas accéder au contenu de l'iframe puisqu'elle n'appartient pas au même domaine que ta page !
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino 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 07h44.


 
 
 
 
Partenaires

Hébergement Web