2009-12-14 3 views
3

Je veux suivre ce qui se passe à l'intérieur d'un iframe lorsqu'un utilisateur clique sur des liens dans l'IFrame. La page qui contient le iframe (le parent) est de suivre la navigation de l'utilisateur à travers la page dans l'iframe. Les deux pages seront hébergées sur le même domaine de premier niveau, bien que les sous-domaines diffèrent.Comment faire pour suivre l'utilisateur dans un iframe

J'ai besoin que la page parente soit notifiée de chaque clic, mais je n'ai pas de contrôle direct sur les pages que je charge dans l'iframe.

L'ajout d'un onclick à tous les liens à chaque fois que la page de l'iframe est chargée est-il possible? Comment ferais-je cela?

Ce serait le "modèle" sur lequel construire:

<html> 
<script language="javascript"> 
    var currentURL; 
</script> 
<body> 
    <iframe id="container" width="500" height="500" src="http://subdomain.parentdomain.com"/> 
</body> 

Répondre

0

Je vais utiliser un AJAX-Proxy pour avoir le contenu (en ce qui le navigateur est concerné) proviennent de mon domaine. Cela résoudra tous les problèmes de script inter-domaines mentionnés par CodeJoust. La vitesse de livraison pourrait être un problème en raison des frais généraux que je vais générer, mais cela devra être vu.

, je proposerai sans doute le long des lignes de cette question Stackoverflow:

"Apply “onclick” to all elements in an iFrame"

En ce qui concerne les questions juridiques liées à mandatement et modifier le contenu des pages dynamiquement, il devra être vérifié. Je crois que le suivi des utilisateurs qui donnent leur consentement exprès est, d'un point de vue éthique, sans problème.

3

accès Iframe crossdomain doit être le même domaine, sous-domaine, et le port.

Si vous les aviez sur le même domaine, vous pouvez lier cliquez sur les gestionnaires d'événements sur tous les liens, puis quand ils sont cliqués connecter un clic pour quelque chose comme Google Analytics, votre base de données, etc.

+0

Est-il possible d'accéder à: sub1.domain.com à partir d'une page placée dans domain.com/folder/file.htm? Cela pourrait être une réponse pour moi. Pour une version locale, le code suivant a fonctionné: http://stackoverflow.com/questions/753863/apply-onclick-to-all-elements-in-an-iframe – Paul

-2

Avec jQuery il serait facile.

$(document).ready(function(){ 
    var iframeWindow = $('#container')[0].contentWindow; 
    $(iframeWindow).load(function(){ 
     $(this).find('a').click(top.myClickHandler); 
    }); 
} 

function myClickHandler(){ 
    /* Do something */ 
} 
+0

Je n'ai pas encore utilisé jQuery, mais Est-ce que le code ci-dessus ne fonctionnerait pas seulement sur la toute première page de l'iframe? Toutes les pages suivantes devront également être modifiées pour que mon site fasse ce qu'il devrait faire. – Paul

+0

Cela ne fonctionnerait pas parce que c'est sur un sous-domaine différent. Si vous obtenez l'iframe sur le même domaine, vous pouvez utiliser $ (parent) .find ('a'). Click (function() {}) 'mais cela ne fonctionnera pas en raison des sous-domaines. – CodeJoust

+0

Touchez le problème de sous-domaine. J'ai écrit ce code pour travailler à partir de la page TOP. Ainsi, chaque fois qu'une nouvelle page est chargée dans l'iframe, un gestionnaire de clic est associé à toutes les ancres de cette page. De cette façon vous n'aurez pas à changer chaque page chargée dans l'iframe, juste la page parent (contenant). –

1

Je n'ai pas un contrôle direct sur les pages je charge dans le iframe

C'est votre bloqueur. Si vous pouvez augmenter le code dans les pages distantes, vous pouvez utiliser postMessage et le hack iframe fragment identifier pour obtenir la couverture du navigateur. Heureusement, quelqu'un a déjà fait le sale boulot pour vous:

+0

Malheureusement, l'augmentation du code n'est pas une option. Pensez à différents départements situés dans différents pays. J'avais vu quelques hacks dans cette direction et en effet il suffirait juste d'envoyer une chaîne (l'URL qui est actuellement cliquée ou affichée dans l'iframe). Vraiment trop mauvais je ne peux pas utiliser cela. – Paul

Questions connexes