Скрыть диалог приветствия плагина чата для пользователей Facebook при загрузке - PullRequest
0 голосов
/ 01 февраля 2019

Я пытался скрыть диалоговое окно приветствия плагина чата клиента при начальной загрузке страницы.Вот вещи, которые не сработали:

  • атрибутreeting_dialog_display
  • атрибут welcome_dialog_delay

Что было странно, потому что другие атрибуты, такие как theme_color и logged_in_greeting, кажутсяработать отлично.

Я использую функцию fbAsyncInit, чтобы убедиться, что я запускаю код после инициализации плагина.Я использовал это для подписки на такие события, как customerchat.show, customerchat.load и т. Д., А затем скрывал диалог, но это тоже не сработало.

Также попытался установить для xfbml значение false, а затем проанализировать его, чтобы использовать FB.CustomerChat.show (shouldShowDialog: boolean) со значением false, но безрезультатно.

Вот код:

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

    $(document).trigger('fbload');
  };

  (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="123456789"
  greeting_dialog_display="fade"
  greeting_dialog_delay="10"
  theme_color="#ff7e29">
</div>
<script>
    $(function() {
        $(document).on('fbload', function() {
            console.log('fb loaded!');
        });
    });
</script>

Ответы [ 3 ]

0 голосов
/ 08 февраля 2019

У меня была такая же проблема.Что я сделал неправильно, так это то, что я поместил свой HTML-код над сценарием, потому что мне нужно было разместить его в определенном месте, поэтому я поместил все сценарии внизу страницы, а HTML-код для мессенджера был в центре моей страницы.Поэтому постарайтесь разместить сценарий над ним.

<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId            : 'MY_APP_ID',
            autoLogAppEvents : true,
            xfbml            : true,
            version          : 'v2.12'
        });
    };

    (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>
<div class="supportTeam">
    <div class="trigger"></div>
    <div class="messenger">
        <div class="fb-customerchat"
             page_id="YOUR_PAGE_ID"
             theme_color="#0084ff"
             greeting_dialog_display="hide"
             logged_in_greeting="Welcome, How we may help you"
             logged_out_greeting="Welcome, How we may help you">
        </div>
    </div>
</div>

Если это не помогает, попробуйте получить последнюю версию SDK или проверьте консоль.Они дают вам ошибки в случае, если что-то не так.

0 голосов
/ 28 февраля 2019

Вы должны изменить:

<div class="fb-customerchat"
  attribution=setup_tool
  page_id="123456789"
  greeting_dialog_display="fade"
  greeting_dialog_delay="10"
  theme_color="#ff7e29">
</div>

TO:

<div class="fb-customerchat" attribution=setup_tool page_id="123456789" greeting_dialog_display="fade" greeting_dialog_delay="10" theme_color="#ff7e29"></div>

Сделать тег div в одну строку.У меня работает

0 голосов
/ 04 февраля 2019

Атрибут приветствие_dialog_display работает, если скрыто.Диалоговое окно просто остается открытым при щелчке значка мессенджера, поскольку закрыть его невозможно, если вы не войдете в мессенджер.

...