首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌AdWords转换服务问题-异步转换代码

谷歌AdWords转换服务问题-异步转换代码
EN

Stack Overflow用户
提问于 2012-04-05 10:53:57
回答 1查看 3.4K关注 0票数 2

我从来没有在网站上实现谷歌广告,所以如果我是不正确的‘行话’,请随时纠正我。

我的工作是在一个网站,有一个登陆页面,为他们的谷歌AdWord活动之一。在这个页面上有一个表单,在处理它时,会带您到另一个页面说‘谢谢您的请求……’。我已经删除了它,并用PHP和Javascript重写了它,以防止页面刷新或重定向。

我遇到的问题是,在“谢谢”页面上,Google代码略有不同,并在加载页面时执行。我的问题是,如何在不重新加载页面的情况下,用不同的变量重新执行转换代码?有谷歌的脚本吗?

将移除脚本标记,然后再次重新执行脚本?

这是我目前拥有的代码(在提交表单之前):

代码语言:javascript
复制
<!-- 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&amp;guid=ON&amp;script=0"/>
    </div>
</noscript>

提交表单后需要更改的内容如下:

代码语言:javascript
复制
var google_conversion_id = 111111;
var google_conversion_label = "gfedcba";
"http://www.googleadservices.com/pagead/conversion/gfedcba/?label=111111&amp;guid=ON&amp;script=0

更改变量很容易!最困难的部分是让脚本使用新变量重新执行.

任何帮助都非常感谢!

更新

发布在here上的答案可能解决了这个问题,但是,我想知道如何用这个答案中提到的变量来提交其他变量。他们是相当不言自明的,但我不能肯定他们是正确的!

另外,有谁知道在Google上我能看到关于这方面的说明吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-24 14:27:36

您不能仅仅重新执行脚本的原因--正如您可能已经注意到的--是因为它使用了document.write,在文档加载之后不应该调用它。

一个可能的解决方案是自己触发GIF请求,就像您提到的那样。如果您真的想重新执行脚本,就有可能重定向document.write

以下是如何做到这一点的一般想法--这个片段将放置在页面中重新加载新内容的某个地方。它假设您使用了jQuery,并且已经将新的页面内容加载到$newContent中,并标记了在重新加载时需要用class="ajax-exec"执行的所有脚本标记。它所做的是直接执行内联脚本,并将jQuery的$.ajax函数与dataType: script一起使用。然后等待所有外部脚本执行,并将重定向输出追加到隐藏的div中。

此产品适用于我们,但无需保修(:

代码语言:javascript
复制
// 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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10027246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档