使用Google跟踪代码管理器添加Facebook聊天支持代码时,HTML无效吗?

时间:2019-02-21 09:04:08

标签: google-tag-manager facebook-messenger

我正在尝试使用Google跟踪代码管理器将Facebook支持聊天模块添加到我的网站。

我使用的代码是由Facebook生成的,而我所做的只是将其直接复制到Google跟踪代码管理器中,所以我不确定为什么它不起作用...

它一直给我这个错误:

“在模板中发现无效的HTML,CSS或JavaScript”

<!-- Load Facebook SDK for JavaScript -->
<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      xfbml            : true,
      version          : 'v3.2'
    });
  };

  (function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = 'https://connect.facebook.net/en_US/sdk/xfbml.customerchat.js';
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

<!-- Your customer chat code -->
<div class="fb-customerchat"
  attribution=setup_tool
  page_id="XXXXXXXXXXX"
  theme_color="#111111">
</div>

2 个答案:

答案 0 :(得分:0)

Google跟踪代码管理器使用一种工具(Closure Compiler)检查Javascript的有效性。与通常只忽略非标准属性的浏览器不同,Closure Compiler中的linter非常严格,会对它不了解的内容不屑一顾(我的有根据的猜测是-CC试图优化Javascript以使其运行更快,并且如果它不了解标签的哪个部分,则无法优化。

因此,如果收到此警告,请首先检查不是标准HTML的位。就像在其他答案中指出的那样,诸如“属性”,“ page_id”和“ theme_color”之类的属性是不错的选择。您需要将它们一个接一个地删除,以查看是否可以部署标记,然后希望您的聊天仍然可以进行。

答案 1 :(得分:0)

我假设您在Custom HTML GTM标签中添加了给定的代码,在这种情况下,纯HTML将不起作用(<div class="fb-customerchat" [...]</div>)。因此,必须将给定的代码转换为javascript才能正常工作。

我将遵循GTM文档并使用User-defined (Constants) Variables来存储参数或任何字符串/值。 (可选,它将与诸如var page_id = '0123456789';这样的硬编码值一起使用)

在下面的示例中,我将两种方法混合使用以更好地理解。

<script>
(function() {
    // Sample variables
    var page_id = '{{FB - PageID}}';
    var ref = '';
    var theme_color = '{{FBChat - ThemeColor}}';
    var logged_in_greeting = 'Your greeting message for logged in users'; // Can be a Custom Constant Variable Sting
    var logged_out_greeting = 'Your greeting message for logged out users'; // Can be a Custom Constant Variable Sting

    // Do not edit
    var el = document.createElement('div');
    el.className = 'fb-customerchat';
    el.setAttribute('page_id', page_id);
    if (ref.length) {
        el.setAttribute('ref', ref);
    }
    el.setAttribute('theme_color', theme_color);
    el.setAttribute('logged_in_greeting', logged_in_greeting);
    el.setAttribute('logged_out_greeting', logged_out_greeting);
    document.body.appendChild(el);
})();
  
  // Facebook SDK for JavaScript : https://developers.facebook.com/docs/javascript/quickstart
    window.fbAsyncInit = function() {
    FB.init({
      appId      : '{{FB - AppID}}',
      xfbml      : true,
      // autoLogAppEvents : true,
      version    : 'v3.3'
    });
    // autoLogAppEvents replacement with logPageView
    FB.AppEvents.logPageView();
  };
  
  // Customer Chat SDK : https://developers.facebook.com/docs/messenger-platform/discovery/customer-chat-plugin/sdk#install
  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "https://connect.facebook.net/en_US/sdk/xfbml.customerchat.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
</script>