Archives par mot-clé : iframe

Comment récuperer des paramètres passés en Url d’un appel de javascript !

Bonjour,

Derrière ce titre quelque peut imbitable, se cache une problèmatique réelle. Dans le cadre de l’affilation certains diffuseurs ont besoin d’inclure des javascript plutot que des widget en iframe.

Pourquoi ? Ben tout simplement pour pouvoir afficher de manière asynchrone leur page et les widgets des annonceurs.

Si comme moi, vos bannières sont des médias riches incluant des images, css, et js, vous  et si en plus vos médias ont besoin de paramètres particuliers, vous allez aimer ce billet !

Je m’explique.

J’ai des bannières paramétrables et qui nécéssitent d’être insérées dans la pages du diffuseur via une iframe (Oui je sais les iframes c’est mal ! :-D).

Exemple de script Iframe :

<iframe src="monurliframe" width="malargeur" height="mahauteur"/>

Seulement je voudrais faire ceci en chargeant simplement un fichier javascript avec un appel du type :

<script type="application/x-javascript" src="httpw://monsite/js/monscript.js?param1=valeur1&param2=valeur2"></script>

Ah oui mais seulement voila, les paramêtres ne sont pas recupérable  en javascript, donc « Houston ? On as un problème ! »

L’astuce consiste a rechercher l’inclusion du script, de « parser » la source de l’appel et à en extraire les paramètres.

Pour ce faire, j’ai utliser un bout de code trouvé à l’adresse suivante : http://linuxfr.org/forums/programmationweb/posts/javascript-appel%C3%A9-avec-param%C3%A8tres-dans-lurl

Avec un peu de reformattage, on arrive au code suivant :

//Recuperation des parametres passés en url de l'appel javascript.
function getParam(){
  var src;
  var scripts = document.getElementsByTagName('script');
  for(var i = 0; i < scripts.length; i++){
    src = scripts[i].getAttribute('src');
    if(src.match(/widget\.js(\?.*)?$/) != null){
      var splitURL = src.split('?');
      var params = splitURL[1].split('&');
      var myParams = new Object();
      var keyValue = new Array();
      for(var j = 0; j < params.length; j++){
        keyValue = params[j].split('=');
        myParams[keyValue[0]] = unescape(keyValue[1]);
      }
    }
  }
  return myParams;
}
params = getParam();
//Ecriture de l'iframe
document.write('<iframe src=\"http:/monsite.com/mapageiframe.php?param1='+params['param1']+'&param2='+params['param2']+'\" frameborder=\"0\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"></iframe>');

La premiere partie est la fonction qui parcourt le document courant et isole toutes les balises <script>, ensuite pour chacune d’entre elles, on verifie que le nom du fichier javascript correspond bien au notre. Si c’est le cas, on extrait les paramêtres que l’on retourne dans un tableau associatif.

La seconde partie est un exemple d’utilisation : l’ecriture d’une iframe, ceci dit c’est applicable à nombre de cas !

En espérant que ce billet vous sera utile !