1

我有一個建在React JS棧上的SPA。我正在使用react-router瀏覽網頁,我需要在我的網站上執行Google AdWords如何防止Google AdWords腳本阻止在SPA中重新加載?

<script type="text/javascript"> 
    /* <![CDATA[ */ 
    goog_snippet_vars = function() { 
    var w = window; 
    w.google_conversion_id = 333333; 
    w.google_conversion_label = "33333"; 
    w.google_remarketing_only = false; 
    } 
    // DO NOT CHANGE THE CODE BELOW. 
    goog_report_conversion = function(url) { 
    goog_snippet_vars(); 
    window.google_conversion_format = "3"; 
    var opt = new Object(); 
    opt.onload_callback = function() { 
    if (typeof(url) != 'undefined') { 
     window.location = url; 
    } 
    } 
    var conv_handler = window['google_trackConversion']; 
    if (typeof(conv_handler) == 'function') { 
    conv_handler(opt); 
    } 
    } 
    /* ]]> */ 
</script> 

我嵌入身體這個代碼,我跑goog_report_conversion當我上按鈕,導航我到另一個網頁點擊。哪些是SPA的不良行爲。

<Link 
    className="btn btn-primary" 
    to="/settings" 
    onClick={() => goog_report_conversion('site.name/settings')} 
>Go to settings</Link> 

問題是,一旦我這樣做,它會完全重新加載我的網頁。 我知道這行導致該問題

window.location = url; 

但是,如果沒有它的腳本不起作用。

我也嘗試在Google跟蹤代碼管理器中創建此事件,並按照此處給出的建議Google Tag Manager causes full page reload in SPA - React,但它沒有幫助我。

有沒有人遇到過在SPA中實施AdWords的相同問題?你是如何解決它的?

+0

在什麼樣的wa Ÿ它不工作?如果您不提供可選的url參數,則不應該有重定向。 –

回答

2

我覺得異步再營銷/轉換片段的實現示例是不必要的複雜。這是我們在類似場景中使用的東西。

首先我們定義,我們可以重用的小幫手功能:

<script type="text/javascript"> 
function triggerConversion(conversionID, conversionLabel) { 
    if (typeof(window.google_trackConversion) === "function") { 
     window.google_trackConversion({ 
      google_conversion_id: conversionID, 
      google_conversion_label: conversionLabel, 
      google_remarketing_only: false 
     }); 
    } 
} 
</script> 

那麼我們包括谷歌的異步轉換腳本(理想的地方在那裏它不會阻止渲染):

<script type="text/javascript" 
     src="http://www.googleadservices.com/pagead/conversion_async.js" 
     charset="utf-8"> 
</script> 

而且現在您可以跟蹤任何元素上的轉化,如此來調整您的示例:

<Link 
    className="btn btn-primary" 
    onClick={() => triggerConversion(333333, "33333")} 
>Go to settings</Link>