javascript - 如果用户在聊天机器人外部单击,如何添加触发关闭聊天机器人?

标签 javascript jquery twitter-bootstrap bootstrap-4 bootstrap-modal

我的 html 代码是这样的:

<div class="chatbot chatbot--closed ">
  <div class="chatbot__header">
    <p><strong>Got a question?</strong> <span class="u-text-highlight">Ask Harry</span></p>
    <svg class="chatbot__close-button icon-speech" viewBox="0 0 32 32">
      <use xlink:href="#icon-speech" />
    </svg>
    <svg class="chatbot__close-button icon-close" viewBox="0 0 32 32">
      <use xlink:href="#icon-close"  data-toggle="modal" data-target="#basicModal" />
    </svg>
  </div>
  <div class="chatbot__message-window">
    <ul class="chatbot__messages">
      <li class="is-ai animation">
        <div class="is-ai__profile-picture">
          <svg class="icon-avatar" viewBox="0 0 32 32">
            <use xlink:href="#avatar" />
          </svg>
        </div>
        <span class="chatbot__arrow chatbot__arrow--left"></span>
        <p class='chatbot__message'><strong class='intro'>Hello, I’m Harry, your virtual assistant. I'm here to help with your general enquiries.</strong>Example of questions you can ask for demo purpose: <br><em>Hi / How are you? / I'd like some financial advice / Can you email me a statement? / Can I get a form? /  How do I cancel my life insurance? </em></p>
      </li>
      <!-- Message here -->
    </ul>
  </div>
  <div class="chatbot__entry chatbot--closed">
    <input type="text" class="chatbot__input" placeholder="Write a message..." />
    <svg class="chatbot__submit" viewBox="0 0 32 32">
      <use xlink:href="#icon-send" />
    </svg>
  </div>
</div>

演示和完整代码如下:https://codepen.io/trendingnews/pen/wvBorrR?editors=1010

当用户点击关闭聊天机器人时,它会出现一个反馈模式来填充使用聊天机器人的用户体验。如果用户单击聊天机器人上的关闭图标,它将关闭聊天机器人。我希望当用户单击聊天机器人外部的元素时,聊天机器人也可以关闭

我该怎么做?

最佳答案

试试这个:

CodePen


$document.addEventListener("click", function(event) { 
  $target = $(event.target);
  var element = document.getElementsByClassName("chatbot");
  if(!$target.closest('.chatbot').length && !$target.closest('#chat-circle').length && (element[0].style.display == "block")) {
      element[0].style.display = "none";
      document.getElementById("chat-circle").style.display="block";
  }        
});

也许这不是最好的解决方案,但它对我有用。

关于javascript - 如果用户在聊天机器人外部单击,如何添加触发关闭聊天机器人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59370799/

相关文章:

javascript - 将新单元格添加到现有行

css - <label/> 和 <a/> 之间不需要的换行符

javascript - 如何使用 Jquery 发布/提交表单?

c# - 获取 ASP.NET GridView 单元格值并在 JQuery 进度条中显示

jquery - 如何创建一个具有特定 Id + n 的新 div?

jquery - 绑定(bind)到已经发生的事件并自动运行处理程序

javascript - 杀死(关闭)一个已经打开的 Twitter Bootstrap 模式?

html - 如何更改下拉项的颜色?

javascript - 将 c# 数据表转换为 JSON 数组以传递给 Google Charts

javascript - i18next - "WebpackError: TypeError: namespaces.forEach is not a function"(钩子(Hook))