Я новичок в javascript, и, вероятно, в этом моя проблема. Я пытаюсь отслеживать конверсии AdWords, которые происходят в виджете на нашем сайте. Пользователь заполняет форму, и результат виджета публикуется в том же div без обновления страницы. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь добавить (или добавить в jQuery) оба элемента скрипта в код Google (показано ниже), страница перенаправляется 302 на пустую страницу Google (или, по крайней мере, так это выглядит через FireBug) . Я могу предоставить метод обратного вызова для результатов формы, и именно туда я пытаюсь вставить код отслеживания AdWords. Для справки это код, предоставленный 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>
Довольно стандартный материал. Итак, я пытаюсь вставить это на страницу результатов, используя метод обратного вызова (который предоставляется). Честно говоря, меня перенаправляют независимо от того, когда я пытаюсь вставить этот код с помощью js или jQuery (либо при загрузке исходной страницы, либо в обратном вызове), поэтому, возможно, бит обратного вызова не имеет значения, но именно поэтому я не просто вставляю его в код страницы.
Я пробовал несколько разных способов сделать это, но вот то, что у меня есть сейчас (извините за небрежность. Сейчас я просто пытаюсь пробиться через это!):
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);
}
На самом деле странно то, что когда я вставляю только один из тегов скрипта (неважно, какой из них), он не перенаправляется. Он перенаправляется только тогда, когда я пытаюсь вставить их обоих.
Я также пробовал поместить первый тег скрипта в исходный код страницы (поскольку он нигде не выполняет никаких вызовов, он просто устанавливает переменные) и просто вставляет файл conversions.js, и он по-прежнему выполняет перенаправление.
Если это уместно, я использую Firefox 3.6.13 и пробовал включенный код как с jQuery 1.3, так и с 1.5 (после того, как понял, что мы используем v1.3).
Я знаю, что что-то упускаю! Какие-либо предложения?
document.createElement('noscript');
. лолз - person Andrew Bullock   schedule 17.02.2012$(...).html(...)
будет выполнять сценарии JavaScripts, но основная проблема, насколько я могу судить, заключается в том, что глобальные переменные определяются с помощью ключевого слова var. Я не уверен, что функция append () также будет правильно запускать скрипты. В любом случае, лучше использовать код в ответе Microscopic (но без ключевых слов var). - person Alexis Wilke   schedule 22.07.2012var foo = 1234;
в собственномscript
в заголовке страницы. Затем с помощью некоторого Ajax я вызвалjQuery('#myDiv').html('<script src="myTestScript.js"></script>');
и обнаружил, что да, он смог получить доступ к значениюfoo
, поэтому я не совсем уверен, что это проблема. (Да, myTestScript.js был даже в другом домене) - person Funka   schedule 24.07.2012alert
их очень хорошо и т.д., но, что интересно, мои попытки использоватьdocument.write
не дали работают и (см. мой другой комментарий в другом месте на этой странице) я подозреваю, что это не работает так, как мы надеялись ... Использование iframe - это предложение, которое я видел несколько других мест, так что я могу попробовать это позже, а пока мы собираемся попробовать просто использовать скрытый пиксель 1x1, который вы обычно видите в блокеnoscript
, и посмотрим, достаточно ли этого для клиента ... - person Funka   schedule 24.07.2012