Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在safari中动态插入Google AdWords转换跟踪爆炸_Javascript_Dom_Iframe_Google Ads Api - Fatal编程技术网

Javascript 在safari中动态插入Google AdWords转换跟踪爆炸

Javascript 在safari中动态插入Google AdWords转换跟踪爆炸,javascript,dom,iframe,google-ads-api,Javascript,Dom,Iframe,Google Ads Api,我正在开发一个单页应用程序,它可能会在每次页面加载时触发超过1次转换 我需要启动google转换代码段,所以我假设可以在运行时将其插入。该代码段如下所示: <script type="text/javascript"> /* <![CDATA[ */ var google_conversion_id = XXXXXXXX; var google_conversion_language = "en"; var goo

我正在开发一个单页应用程序,它可能会在每次页面加载时触发超过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>
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;

    }
<iframe src="/documents/adsense.htm" width="728px" height="90px" frameborder="0" marginwidth ="0px" marginheight="0px" scrolling="no"></iframe>
除了safari之外,这在我尝试过的所有浏览器中都有效

在safari中,当添加第二个脚本标记时,整个主体标记的内容将替换为google iFrame。事实上,整个dom都被核化了。头部的内容物也被抹掉了

谷歌脚本中到底发生了什么,我如何在没有任何东西爆炸的情况下插入它

更新: 看起来出于某种原因safari不喜欢我添加脚本的方式。为了解决这个问题,我在
debugger
行下面添加了
bucket.innerHTML='
,它在Safari中工作得非常好。不幸的是,这导致FF3.6做了safari以前做的事情,并对DOM进行了核攻击

更为复杂的是,AdWords似乎拒绝了这些转换或其他东西,它们在注入页面时不会显示在报告端


我目前的方法是使用htaccess和一点字符串解析来生成一个页面,页面上除了转换片段外什么都没有,然后使用iFrame对其进行分析。我将对此进行汇报。

也许通过iFrame插入谷歌广告更容易些

例如:

<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>
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;

    }
<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>

谷歌Adsense

谷歌仍将知道并跟踪父页面。

虽然这并没有真正解决问题,但它接近我最终使用的解决方案。我仍在努力解决这个问题,但我已经用我的流程更新了我的答案。注意,这样做肯定违反了你在注册adsense时同意的ToS。请您更新一个有效的解决方案好吗?你终于修好了吗?非常感谢。