2012-04-05 85 views
2

我從未在網站上實施Google Adwords,因此如果我對「行話」不正確,請隨時糾正我。Google AdWords轉換服務問題 - 異步轉換代碼

我正在爲其Google AdWord廣告系列的某個目標網頁提供服務。在這個頁面上有一個表格,在處理完成後,你會轉到另一個頁面說'謝謝你的請求...'。我已經刪除了這個,並在PHP和Javascript中重寫它,以防止頁面刷新或重定向。

我遇到的問題是,在「謝謝」頁面上,Google代碼略有不同,並且在加載頁面時執行。 我的問題是,如何在不重新加載頁面的情況下重新執行具有不同變量的轉換代碼?有這個Google腳本嗎?

將刪除腳本標記,然後再次放置它重新執​​行腳本?

這是代碼我現在有(表單提交前):

<!-- Google Code for Company Remarketing List Remarketing List --> 
<script type="text/javascript"> 
    /* <![CDATA[ */ 
    var google_conversion_id = 000000; 
    var google_conversion_language = "en"; 
    var google_conversion_format = "3"; 
    var google_conversion_color = "ffffff"; 
    var google_conversion_label = "abcdefg"; 
    var google_conversion_value = 0; 
    /* ]]> */ 
</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/000000/?label=abcdefg&amp;guid=ON&amp;script=0"/> 
    </div> 
</noscript> 

需要表單提交後,要改變的事情是:

var google_conversion_id = 111111; 
var google_conversion_label = "gfedcba"; 
"http://www.googleadservices.com/pagead/conversion/gfedcba/?label=111111&amp;guid=ON&amp;script=0 

更改變量簡單!困難的部分是讓腳本重新執行新的變量。

任何幫助非常感謝!

UPDATE

答案公佈here可能解決了這個問題,不過,我想知道我怎麼可以與用在該答覆中提到的變量提交的其他變量。他們很自我解釋,但我不能確定他們是對的!

此外,有沒有人知道在谷歌上我可以真正看到這方面的指示?

回答

1

您不能重新執行腳本的原因是 - 您可能已經注意到 - 它使用document.write,它不應在文檔已加載後調用。

正如你所提到的,一個可能的解決方案就是自己發出GIF請求。如果你真的想重新執行腳本,可以重定向document.write

下面是如何做到這一點的一般想法 - 這個片段將放置在您將新內容重新加載到頁面的某處。它假設您使用jQuery並且已經將新頁面內容加載到$newContent中並標記了所有需要在class="ajax-exec"上重新加載時執行的腳本標記。它的作用是直接執行內聯腳本,並使用jQuery的$.ajax函數和dataType: script。然後等待所有外部腳本執行完畢並將重定向的輸出附加到隱藏的div

這爲我們工作,但不附帶保修(:

// Execute js from the new content (e.g. AdWords conversions tags). 
// We redirect document.write to a string buffer as we're already 
// done loading the page at this point. 
var buf = ''; 
var writeMethSave = document.write; 
$('div#lazyload-buf').remove(); 
var done = {}; 

document.write = function (string) { 
     buf += string; 
}; 

$newContent.filter('script.ajax-exec').each(function() { 
    var url = $(this).attr('src'); 
    if (url) { 
     // External script. 
     done[url] = false; 
     $.ajax({ 
      url: url, 
      dataType: "script", 
      success: function() { 
       done[url] = true; 
      } 
     }); 
    } else { 
     // Inline script. 
     $.globalEval($(this).html()); 
    } 
}); 

function checkForDone() { 
    for (var url in done) { 
     if (!done[url]) { 
      setTimeout(checkForDone, 25); 
      return; 
     } 
    } 
    // All done, restore method and write output to div 
    document.write = writeMethSave; 
    var $container = $(document.createElement("div")); 
    $container.attr('id', 'lazyload-buf'); 
    $container.hide(); 
    $(document.body).append($container); 
    $container.html(buf); 
}; 

setTimeout(checkForDone, 25);