Récemment, un client nous a remonté une problématique particulière : il souhaite publier un contenu de type interstitiel sur sa home page au moyen du module d’Ad Serving de notre suite SmartProfile. Il rencontre une difficulté à masquer le layer du fond (overlay) en cliquant à partir de son contenu.
Pour faire simple, une contrainte de sécurité (évidente) au niveau des navigateurs empêche deux fenêtres (frames ou iframes) de communiquer entre elles si leur domaine n’est pas le même.
Prenons un exemple concret : Une fenêtre principale (fond bleu dans le schéma suivant) affiche un document à partir d’un domaine www.aaa.com.
Ce document contient :
- la définition d’une fonction javascript, testA() qui affiche un message
- une iframe (fenêtre fille, fond rouge dans le schéma ci-dessous) dont le code source du document est disponible à partir d’un domaine www.bbb.com. Ce document fait simplement appel à la fonction de la fenêtre mère (fond bleu ; « parent.testA(); »)
Dans ce cas, l’appel est bloqué par le navigateur et la fonction testA() ne sera pas exécutée.
En ayant la main sur les 2 domaines, nous avons cependant la possibilité de contourner cette limite très facilement. Dans le sous cadre (fond rouge), nous ajoutons une frame (fond vert dans le schéma ci-dessous) qui va charger un document contenu sur le premier domaine (« www.aaa.com » pour notre exemple) et qui va se charger d’appeler la fonction javascript testA(). De cette façon nous pourrons simuler une interaction entre 2 frames basées sur des domaines différents.
Réagissez à cet article en laissant un commentaire, partagez le à vos connaissances et inscrivez-vous à notre flux RSS pour être informé dès la parution de nouveaux articles.