动态插入Google AdWords转化跟踪会在Safari中爆炸

loading...


4

我正在开发一个单页应用程序,每个页面加载可能会触发超过1次转换 .

我需要触发google转换代码段,所以我假设我可以在运行时将其抛出 . 该片段看起来像这样:

<script type="text/javascript">
        /* <![CDATA[ */
        var google_conversion_id = XXXXXXXX;
        var google_conversion_language = "en";
        var google_conversion_format = "2";
        var google_conversion_color = "ffffff";
        var google_conversion_label = "XXXXXXXXXXXXXXX";
        var google_conversion_value = 25.00;
        /* ]]> */
        </script>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
        </script>

我一直在使用javascript在转换触发时插入代码段 . 我是这样做的:

function(id,url,content){
        // add script
        var script   = document.createElement("script");
        script.type  = "text/javascript";
        if(url) script.src   = url;
        if(content) script.text = content;
        var bucket = document.getElementById(id);
        bucket.appendChild(script);

        debugger;

    }

这适用于我尝试过的所有浏览器,除了safari .

在safari中,添加第二个脚本标记时,整个body标记的内容将替换为google iFrame . 事实上整个dom都是核心的 . 头部的内容也被删除了 .

谷歌脚本到底发生了什么,如何在没有一切爆炸的情况下插入这个?!?

更新:

看起来由于某种原因safari不喜欢我添加脚本的方式 . 为了解决这个问题,我在 debugger 行下方添加了 bucket.innerHTML = '' ,它在Safari中运行良好 . 不幸的是,这导致FF 3.6执行safari之前正在做的事情并且核对DOM .

为了使其更加复杂,似乎AdWords拒绝了这些转化或其他内容,它们在注入页面时不会显示在报告端 .

我目前的方法是使用htaccess和一个小字符串解析生成一个页面,除了上面的转换片段之外什么都没有,然后iFrame它 . 我将报告回来 .

1回答

  • 3

    也许通过iFrame插入Google广告可能更容易?

    像这样:

    <iframe src="/documents/adsense.htm" width="728px" height="90px" frameborder="0" marginwidth ="0px" marginheight="0px" scrolling="no"></iframe>
    

    iFrame包含:

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Google Adsense</title>
    <base target="_parent">
    </head>
    <body>
    <!--insert Google Adsense Code Here-->
    </body>
    </html>
    

    Google仍会知道并跟踪父页面 .

loading...

评论

暂时没有评论!