Javascript 在safari中动态插入Google AdWords转换跟踪爆炸
我正在开发一个单页应用程序,它可能会在每次页面加载时触发超过1次转换 我需要启动google转换代码段,所以我假设可以在运行时将其插入。该代码段如下所示: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
<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。请您更新一个有效的解决方案好吗?你终于修好了吗?非常感谢。