在聊天气泡中添加复制按钮:适配安卓浏览器及样式美化

本文将介绍如何在聊天气泡中添加一个复制按钮,实现文本复制功能,并确保该功能在安卓浏览器中正常运行。同时,我们将提供一些 CSS 样式来美化复制按钮。

代码实现

首先,在 addMessage 方法中创建复制按钮并将其插入气泡元素的前面,确保按钮在气泡文本前面显示。

function addMessage(messageText, sender) {
  var messageContainer = document.createElement('div');
  var messageBubble = document.createElement('div');
  var messageBubbleText = document.createElement('span');
  var messageSender = document.createElement('div');
  var messageTime = document.createElement('div');
  var copyButton = document.createElement('button'); // 创建复制按钮

  messageContainer.classList.add('message-container');
  messageBubble.classList.add('message-bubble');
  messageSender.classList.add('message-sender');
  messageTime.classList.add('message-time');
  copyButton.classList.add('copy-button'); // 添加复制按钮样式

  messageBubbleText.innerText = messageText;
  messageSender.innerText = sender;
  messageTime.innerText = new Date().toLocaleString();
  copyButton.innerText = '复制'; // 设置复制按钮文本

  messageBubble.appendChild(copyButton); // 将复制按钮添加到气泡中
  messageBubble.appendChild(messageBubbleText);
  messageContainer.appendChild(messageBubble);
  messageContainer.appendChild(messageSender);
  messageContainer.appendChild(messageTime);
  lastMessageContainer.appendChild(messageContainer);

  // 点击复制按钮时复制文本
  copyButton.onclick = function() {
    if (navigator.userAgent.indexOf('Android') > -1) {
      // 安卓浏览器使用prompt复制
      prompt('长按复制', messageText);
    } else {
      // 其他浏览器使用Clipboard API复制
      navigator.clipboard.writeText(messageText);
    }
  };

  // 注意:这里将气泡里的文本内容加入到了气泡元素中,因此要在气泡元素的前面插入复制按钮。
  lastMessageContainer.querySelector('.message-bubble').innerText += messageText;
}

适配安卓浏览器

安卓浏览器不支持 navigator.clipboard API,因此需要使用 prompt 函数实现复制功能。代码中通过判断用户代理字符串 navigator.userAgent 来区分不同的浏览器类型,并根据不同的浏览器类型使用不同的复制方法。

美化复制按钮

以下 CSS 代码用于美化复制按钮:

.copy-button {
  background-color: transparent;
  color: #007bff;
  border: none;
  outline: none;
  cursor: pointer;
  font-size: 12px;
  position: absolute;
  left: -40px;
  top: 50%;
  transform: translateY(-50%);
}

.copy-button:hover {
  text-decoration: underline;
}

这段代码将复制按钮设置为透明背景,蓝色文本,并使用一些基本的样式来使其看起来更美观。

总结

通过以上代码,我们成功地在聊天气泡中添加了复制按钮,并使其能够在安卓浏览器中正常工作。此外,我们还提供了美化按钮的 CSS 样式,使按钮看起来更美观。


原文地址: https://www.cveoy.top/t/topic/mZFN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录