问题描述
||
我需要在单个页面上向Google注册多个转化。在Chrome和Firefox中,这可以正常工作。在IE中,页面/调用似乎已被缓存,随后仅发送一次转换。
我尝试添加无缓存元标记,但这没有用。
<META HTTP-EQUIV=\"Pragma\" CONTENT=\"no-cache\">
<META HTTP-EQUIV=\"Expires\" CONTENT=\"-1\">
我还尝试过为每次转换调用完全独立的页面,以期避免缓存问题。这也没有用。
这是调用的转换页面。它已加载到iframe中。
<head>
<script type=\"text/javascript\">
var google_conversion_id = 1070072355;
var google_conversion_language = \"en\";
var google_conversion_format = \"3\";
var google_conversion_color = \"ffffff\";
var google_conversion_value = 0;
var google_conversion_label;
var googleConversionType = 1; //default to 1
//check if we need to to GCR
var GCR = QueryStringGet(\"G\");
if (GCR && GCR != \"\" && GCR != 0) {
googleConversionType = GCR;
}
/*
CONVERSION TYPES:
1- Single Lead: V-v8CMnc_gEQo4Sg_gM
2- Multiple Leads: oHF7CLHf_gEQo4Sg_gM
3 - Campaign Single: CmYQCMHd_gEQo4Sg_gM
4 - Consultation: aSv7CLne_gEQo4Sg_gM
*/
//set the label per conversion type
if (googleConversionType == 1) {
google_conversion_label = \"V-v8CMnc_gEQo4Sg_gM\";
}
else if (googleConversionType == 2) {
google_conversion_label = \"oHF7CLHf_gEQo4Sg_gM\";
}
else if (googleConversionType == 3) {
google_conversion_label = \"CmYQCMHd_gEQo4Sg_gM\";
}
else if (googleConversionType == 4) {
google_conversion_label = \"aSv7CLne_gEQo4Sg_gM\";
}
//retrieves a value from the querystring
function QueryStringGet(ji) {
hu = window.location.search.substring(1);
gy = hu.split(\"&\");
for (i = 0; i < gy.length; i++) {
ft = gy[i].split(\"=\");
if (ft[0] == ji) {
return ft[1];
}
}
}
</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/1070072355/?label=V-v8CMnc_gEQo4Sg_gM&guid=ON&script=0\"/>
</div>
</noscript>
<title></title>
</head>
这是将页面加载到iframe中的代码
function GoogleConversionRegister(pageNum) {
if (!pageNum || pageNum == 0)
pageNum = 1;
var iframe = document.createElement(\'iframe\');
iframe.style.width = \'0px\';
iframe.style.height = \'0px\';
document.body.appendChild(iframe);
iframe.src = \'http://www.nirshamim.co.il/google/conversion_\' + pageNum + \'.html?G=\' + googleConversionType + \'&tile=\' + (Math.random() * 100000);}
这是Fiddler的结果:
铬
IE浏览器
解决方法
为了规避IE的缓存机制,我被迫手动用所需的javascript填充iframe(而不是加载外部页面)。
代码:
var iframe;
if (document.createElement && (iframe = document.createElement(\'iframe\'))) {
iframe.name = iframe.id = \'conversion_\' + pageNum;
iframe.width = 0;
iframe.height = 0;
document.body.appendChild(iframe);
}
if (iframe) {
var iframeDoc;
if (iframe.contentDocument) {
iframeDoc = iframe.contentDocument;
}
else if (iframe.contentWindow) {
iframeDoc = iframe.contentWindow.document;
}
else if (window.frames[iframe.name]) {
iframeDoc = window.frames[iframe.name].document;
}
if (iframeDoc) {
iframeDoc.open();
iframeDoc.write(\'<html><body><script language=javascript>var google_conversion_id = XXXXX; var google_conversion_language = \"en\"; var google_conversion_format = \"3\"; var google_conversion_color = \"ffffff\"; var google_conversion_value = 0; var google_conversion_label = \"XXXX\";</script><script type=\"text/javascript\" src=\"http://www.googleadservices.com/pagead/conversion.js\"></script></body></html>\');
iframeDoc.close();
}
}