使用Javascript或jQuery插入Google Adwords转换跟踪

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (64)

我对JavaScript非常陌生,其中可能存在我的问题。我试图跟踪在我们网站上的小部件中发生的AdWords转化。用户填写表单,并且小部件的结果将发布在同一个div中,而不会刷新页面。我遇到的问题是当我尝试appendChild(或追加jQuery)两个脚本元素在谷歌的代码(如下所示)页面302重定向到一个空白的谷歌页面(或至少这是它通过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&amp;guid=ON&amp;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&amp;guid=ON&amp;script=0";

    $('body').append(scriptTag2);
    $('noscript').append(imgTag);
}

真奇怪的是,当我只插入其中一个脚本标记时(它并不重要),它不会重定向。它只在我尝试插入它们时才重定向。

我也尝试将第一个脚本标签放入原始页面代码中(因为它不会在任何地方进行任何调用,它只是设置变量),只是插入conversions.js文件,它仍然会执行重定向。

如果它是相关的,我使用的是Firefox 3.6.13,并试用了包含jQuery 1.3和1.5的代码(在意识到我们使用的是v1.3之后)。

我知道我错过了一些东西!有什么建议么?

提问于
用户回答回答于

如果您在页面中使用jQuery,那么getScript在设置所需变量后,为什么不使用相同的方法轮询转换跟踪脚本?

这是我通常所做的,一旦我从我的AJAX调用中收到成功响应

var google_conversion_id = <Your ID Here>;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "ffffff";
var google_conversion_label = "<Your Label here>";
var google_conversion_value = 0;
if (100) {
    google_conversion_value = <Your value here if any>;
}
$jQ.getScript( "http://www.googleadservices.com/pagead/conversion.js" );

这对我来说很好。如果你想要一个更详细的例子:

$.ajax({
    async:      true,
    type:       "POST",
    dataType:   "json",
    url:        <Your URL>,
    data:       _data,
    success:    function( json ) {

            // Do something
            // ...

            // Track conversion
            var google_conversion_id = <Your ID Here>;
            var google_conversion_language = "en";
            var google_conversion_format = "3";
            var google_conversion_color = "ffffff";
            var google_conversion_label = "<Your Label here>";
            var google_conversion_value = 0;
            if (100) {
                google_conversion_value = <Your value here if any>;
            }
            $.getScript( "http://www.googleadservices.com/pagead/conversion.js" );

        } // success
});

如果您使用其他库,如Mootools或Prototype,我相信他们有类似的内置方法。这个AFAIK是最干净的方法之一。

用户回答回答于

现在使用异步标签可以很方便地http://www.googleadservices.com/pagead/conversion_async.js公开该window.google_trackConversion功能。

这个功能可以随时使用。例如,在提交表单后,就像你的情况一样。

请参阅https://developers.google.com/adwords-remarketing-tag/asynchronous/

扫码关注云+社区