我从来没有在网站上实现谷歌广告,所以如果我是不正确的‘行话’,请随时纠正我。
我的工作是在一个网站,有一个登陆页面,为他们的谷歌AdWord活动之一。在这个页面上有一个表单,在处理它时,会带您到另一个页面说‘谢谢您的请求……’。我已经删除了它,并用PHP和Javascript重写了它,以防止页面刷新或重定向。
我遇到的问题是,在“谢谢”页面上,Google代码略有不同,并在加载页面时执行。我的问题是,如何在不重新加载页面的情况下,用不同的变量重新执行转换代码?有谷歌的脚本吗?
将移除脚本标记,然后再次重新执行脚本?。
这是我目前拥有的代码(在提交表单之前):
<!-- Google Code for Company Remarketing List Remarketing List -->
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = 000000;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "abcdefg";
var google_conversion_value = 0;
/* ]]> */
</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/000000/?label=abcdefg&guid=ON&script=0"/>
</div>
</noscript>提交表单后需要更改的内容如下:
var google_conversion_id = 111111;
var google_conversion_label = "gfedcba";
"http://www.googleadservices.com/pagead/conversion/gfedcba/?label=111111&guid=ON&script=0更改变量很容易!最困难的部分是让脚本使用新变量重新执行.。
任何帮助都非常感谢!
更新
发布在here上的答案可能解决了这个问题,但是,我想知道如何用这个答案中提到的变量来提交其他变量。他们是相当不言自明的,但我不能肯定他们是正确的!
另外,有谁知道在Google上我能看到关于这方面的说明吗?
发布于 2012-07-24 14:27:36
您不能仅仅重新执行脚本的原因--正如您可能已经注意到的--是因为它使用了document.write,在文档加载之后不应该调用它。
一个可能的解决方案是自己触发GIF请求,就像您提到的那样。如果您真的想重新执行脚本,就有可能重定向document.write。
以下是如何做到这一点的一般想法--这个片段将放置在页面中重新加载新内容的某个地方。它假设您使用了jQuery,并且已经将新的页面内容加载到$newContent中,并标记了在重新加载时需要用class="ajax-exec"执行的所有脚本标记。它所做的是直接执行内联脚本,并将jQuery的$.ajax函数与dataType: script一起使用。然后等待所有外部脚本执行,并将重定向输出追加到隐藏的div中。
此产品适用于我们,但无需保修(:
// Execute js from the new content (e.g. AdWords conversions tags).
// We redirect document.write to a string buffer as we're already
// done loading the page at this point.
var buf = '';
var writeMethSave = document.write;
$('div#lazyload-buf').remove();
var done = {};
document.write = function (string) {
buf += string;
};
$newContent.filter('script.ajax-exec').each(function () {
var url = $(this).attr('src');
if (url) {
// External script.
done[url] = false;
$.ajax({
url: url,
dataType: "script",
success: function () {
done[url] = true;
}
});
} else {
// Inline script.
$.globalEval($(this).html());
}
});
function checkForDone () {
for (var url in done) {
if (!done[url]) {
setTimeout(checkForDone, 25);
return;
}
}
// All done, restore method and write output to div
document.write = writeMethSave;
var $container = $(document.createElement("div"));
$container.attr('id', 'lazyload-buf');
$container.hide();
$(document.body).append($container);
$container.html(buf);
};
setTimeout(checkForDone, 25);https://stackoverflow.com/questions/10027246
复制相似问题