google-tag-manager - 使用 Google Tag Manager 添加 Facebook 聊天支持代码时 HTML 无效?

标签 google-tag-manager facebook-messenger

我正在尝试使用 Google Tag Manager 将 Facebook 支持聊天模块添加到我的网站。

我使用的代码是由 Facebook 生成的,我所做的只是将它直接复制到 Google Tag Manager,所以我不确定它为什么不起作用......

它一直给我这个错误:

“在模板中发现无效的 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>

最佳答案

我假设您在 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>

关于google-tag-manager - 使用 Google Tag Manager 添加 Facebook 聊天支持代码时 HTML 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54803050/

相关文章:

wordpress - 用于 WordPress 辅助功能的 Google 标签管理器

google-analytics - 为什么我应该使用谷歌标签管理器?

google-tag-manager - Google 跟踪代码管理器将已触发代码中的数据层变量值显示为未定义

带有 iTunes 商店的 iOS 应用程序 - 获取货币代码(不是 priceLocal)

javascript - 谷歌标签管理器。如何防止以编程方式加载自定义标签?

facebook-messenger - 自定义负载不适用于 Messenger

node.js - 带有 Node js的facebook messenger bot api发送多个回复

server - Facebook Messenger 平台中的发送按钮模板 : web_url Button Clicked Event

android - Facebook Messenger 发送元数据 (Android)

facebook-graph-api - 无论我尝试什么,Facebook 的 Checkbox 插件都保持隐藏状态