javascript - Google AdWords 转换服务问题 - 异步转换代码

标签 javascript php jquery google-ads-api

我从未在网站上实现过 Google Adwords,因此如果我对“术语”的理解有误,请随时纠正我。

我在一个网站上工作,该网站有一个 Google AdWord 广告系列的着陆页。在此页面上有一个表格,处理后会将您带到另一个页面以说“感谢您的请求...”。我已删除它并用 PHP 和 Javascript 重写它以防止页面刷新或重定向。

我遇到的问题是,在“谢谢”页面上,Google 代码略有不同,并在页面加载时执行。 我的问题是,如何在不重新加载页面的情况下使用不同的变量重新执行转换代码?是否有用于此的 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&amp;guid=ON&amp;script=0"/>
    </div>
</noscript>

表单提交后需要修改的是:

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 上的哪个位置实际看到这方面的说明?

最佳答案

您不能重新执行脚本的原因是——正如您可能已经注意到的那样——它使用了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);

关于javascript - Google AdWords 转换服务问题 - 异步转换代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10027246/

相关文章:

jQuery Masonry 项目顺序

php - 尝试在 wordpress 自定义页面中实现 jQuery 以进行搜索自动完成但不起作用

javascript - 从 php 调用 javascript 函数时遇到问题

php - 快速递归搜索数组中的所有索引

jquery - 使用jquery更改html元素的整个字段

javascript - 未捕获的类型错误 : Cannot read property 'doThings' of undefined

javascript - 具有 "More"选项作为菜单选项的响应式菜单开始溢出父菜单

javascript - 可重用的 JS ajax 模式 (jquery)

javascript - 如何在 javascript 中使用当前月份获取前 3 个月的数据?

php - 如何从多个表中选择数据