Je suis assez novice en javascript, et c'est probablement là que réside mon problème. J'essaie de suivre les conversions AdWords qui se produisent dans un widget sur notre site. L'utilisateur remplit un formulaire et le résultat du widget est publié dans le même div sans rafraîchissement de la page. Le problème que je rencontre est le suivant : lorsque j'essaie d'ajouter un appendChild (ou un append en jQuery) aux deux éléments script dans le code de Google (illustré ci-dessous), la page est redirigée vers une page Google vierge (ou du moins c'est ce à quoi cela ressemble via FireBug). Je suis en mesure de fournir une méthode de rappel pour les résultats du formulaire, et c'est là que j'essaie d'insérer le code de suivi AdWords. Pour référence, voici le code fourni par Google :
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = 993834405;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "bSpUCOP9iAIQpevy2QM";
/* ]]> */
</script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
</script>
<noscript>
<div style="display:inline;">
<img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/993834405/?label=bSpUCOP9iAIQpevy2QM&guid=ON&script=0"/>
</div>
</noscript>
C'est plutôt standard. Donc, ce que j'essaie de faire, c'est d'insérer ce code dans la page de résultats en utilisant la méthode de rappel (qui est fournie). Franchement, je suis redirigé quel que soit le moment où j'essaie d'insérer ce code à l'aide de js ou de jQuery (soit au chargement initial de la page, soit dans la méthode de rappel). La méthode de rappel n'est peut-être pas pertinente, mais c'est pourquoi je ne me contente pas de le coller dans le code de la page.
J'ai essayé un certain nombre de façons différentes de le faire, mais voici ce que j'ai actuellement (excusez le manque de rigueur). J'essaie juste de me frayer un chemin à travers tout ça en ce moment !)
function matchResultsCallback(data){
var scriptTag = document.createElement('script');
scriptTag.type = "text/javascript";
scriptTag.text = scriptTag.text + "/* <![CDATA[ */\n";
scriptTag.text = scriptTag.text + "var google_conversion_id \= 993834405\;\n";
scriptTag.text = scriptTag.text + "var google_conversion_language \= \"en\"\;\n";
scriptTag.text = scriptTag.text + "var google_conversion_format \= \"3\"\;\n";
scriptTag.text = scriptTag.text + "var google_conversion_color \= \"ffffff\"\;\n";
scriptTag.text = scriptTag.text + "var google_conversion_label \= \"bSpUCOP9iAIQpevy2QM\"\;\n";
scriptTag.text = scriptTag.text + "/* ]]> */\n";
$('body').append(scriptTag);
$('body').append("<script type\=\"text\/javascript\" src\=\"http://www.googleadservices.com/pagead/conversion.js\" />");
//I have also tried this bit above using the same method as 'scriptTag' with no luck, this is just the most recent iteration.
var scriptTag2 = document.createElement('noscript');
var imgTag = document.createElement('img');
imgTag.height = 1;
imgTag.width = 1;
imgTag.border = 0;
imgTag.src = "http://www.googleadservices.com/pagead/conversion/993834405/?label=bSpUCOP9iAIQpevy2QM&guid=ON&script=0";
$('body').append(scriptTag2);
$('noscript').append(imgTag);
}
Ce qui est vraiment étrange, c'est que lorsque je n'insère qu'une seule des balises script (peu importe laquelle), il n'y a pas de redirection. Il ne redirige que lorsque j'essaie d'insérer les deux.
J'ai également essayé de mettre la première balise script dans le code de la page d'origine (car elle ne fait aucun appel nulle part, elle ne fait que définir des variables) et d'insérer simplement le fichier conversions.js et la redirection se fait toujours.
Si c'est pertinent, j'utilise Firefox 3.6.13 et j'ai essayé le code inclus avec jQuery 1.3 et 1.5 (après avoir réalisé que nous utilisions la v1.3).
Je sais qu'il me manque quelque chose ! Des suggestions ?
2 votes
Pour l'instant, j'ai (probablement) réussi à faire fonctionner ce système en plaçant le code adwords dans un iframe et en chargeant l'iframe lorsque le rappel se produit. Je suis sûr qu'il y a un moyen plus élégant, cependant.
75 votes
Je ne peux pas m'en remettre
document.createElement('noscript');
. lolz0 votes
Notez que le
$(...).html(...)
exécutera les scripts Java, mais le principal problème, pour autant que je sache, est que les variables globales sont définies à l'aide du mot clé "var". Je ne suis pas sûr que la fonction append() exécuterait également les scripts correctement. De toute façon, c'est une meilleure idée d'utiliser le code dans Microscopic answer (mais sans les mots-clés 'var').0 votes
Bonjour Alexis, j'ai créé une page de test avec
var foo = 1234;
déclaré dans son proprescript
en tête de page. Ensuite, avec un peu d'Ajax, j'ai fait appel àjQuery('#myDiv').html('<script src="myTestScript.js"></script>');
et a constaté que oui, il était capable d'accéder à la valeur defoo
donc je ne suis pas tout à fait sûr que ce soit le problème. (Oui, myTestScript.js était même sur un domaine différent)0 votes
Un suivi de mon commentaire précédent : Comme indiqué, le test que j'ai effectué a eu accès à mes variables et j'ai trouvé que j'étais capable de
alert
mais, curieusement, mes tentatives d'utilisation de la technologie de l'information et de la communication (TIC) ont échoué.document.write
hizo no travail et (voir mon autre commentaire ailleurs sur cette page) est la raison pour laquelle je soupçonne que cela ne fonctionne pas comme nous l'espérons... L'utilisation d'un iframe est une suggestion que j'ai vue à quelques autres endroits, donc je pourrais essayer plus tard, mais pour l'instant nous allons essayer d'utiliser le pixel caché 1x1 que vous voyez normalement dans la pagenoscript
et voir si cela est "suffisant" pour le client...0 votes
JQuery + Ajax : stackoverflow.com/questions/27149647/