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>