前端实现“点击按钮触发复制文本”功能

【1】实现复制文本功能【部分浏览器不支持】

以下代码实现文本赋值功能我本地浏览器成功了,但是现场环境浏览器 “复制失败”,

  • 我本地浏览器版本:128.0.6613.115
  • 现场环境浏览器版本:86.0.4240.111
async mikeOpen() {
  // window.open('chrome://flags/#unsafely-treat-insecure-origin-as-secure')
  // location.href = 'chrome://flags/#unsafely-treat-insecure-origin-as-secure'

  try {
    await navigator.clipboard.writeText(
      'chrome://flags/#unsafely-treat-insecure-origin-as-secure'
    )
    this.$message('谷歌浏览器访问已复制地址添加平台网址信息开启麦克风权限111')
  } catch (err) {
    console.log('err----111', err)
    this.$message('复制失败111')
  }
},

现场环境浏览器 “复制失败” 报错

xianchang

【2】兼容

【1】的问题可能是现场浏览器不支持 navigator.clipboard.writeText(),可以使用 document.execCommand('copy') ,但是好像有的浏览器不支持document.execCommand('copy')

所以添加了判断,如果浏览器支持 document.execCommand('copy') 则使用 document.execCommand('copy') 进行复制;
如果浏览器支持 navigator.clipboard.writeText 则使用 navigator.clipboard.writeText 修改复制方式

async mikeOpen() {
  // window.open('chrome://flags/#unsafely-treat-insecure-origin-as-secure')
  // location.href = 'chrome://flags/#unsafely-treat-insecure-origin-as-secure'

  this.copyToClipboard('chrome://flags/#unsafely-treat-insecure-origin-as-secure')
    .then(() => {
      this.$message('谷歌浏览器访问已复制地址添加平台网址信息开启麦克风权限222')
    })
    .catch((err) => {
      console.log('err----2222', err)
      this.$message('复制失败222')
    })
},

copyToClipboard(textToCopy) {
  if (document.execCommand('copy')) {
    // 创建textarea
    var textArea = document.createElement('textarea')
    textArea.value = textToCopy
    // 使textarea不在viewport,同时设置不可见
    textArea.style.position = 'fixed'
    textArea.style.opacity = 0
    textArea.style.left = '-999999px'
    textArea.style.top = '-999999px'
    document.body.appendChild(textArea)
    textArea.focus()
    textArea.select()
    return new Promise((res, rej) => {
      // 执行复制命令并移除文本框
      document.execCommand('copy') ? res() : rej()
      textArea.remove()
    })
  } else if (navigator.clipboard && typeof navigator.clipboard.writeText === 'function') {
    // navigator clipboard 向剪贴板写文本
    return navigator.clipboard.writeText(textToCopy)
  }
},

来源

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 HTML 标签中的 `tel:` 属性来实现点击按钮拨打电话的功能。具体步骤如下: 1. 创建一个按钮元素,例如 `<button>` 或 `<a>`。 2. 将 `href` 属性设置为 `tel:电话号码`,例如 `href="tel:1234567890"`。 3. 将按钮文本设置为 "拨打电话" 或类似的指示。 例如,以下是一个简单的示例代码: ```html <button> <a href="tel:1234567890">拨打电话</a> </button> ``` 当用户点击该按钮时,浏览器会自动打开电话应用程序,并将电话号码填入拨号界面中,用户只需点击“拨打”即可拨打电话。请注意,在移动设备上,用户必须具有电话功能才能使用该功能。 ### 回答2: 前端点击按钮拨打电话是指在前端界面上设置一个按钮,当用户点击该按钮时,可以自动拨打电话。实现这个功能可以通过HTML、CSS和JavaScript来完成。 首先,在HTML中可以通过使用`<button>`标签创建一个按钮元素,如下所示: ```html <button id="callBtn">拨打电话</button> ``` 这个按钮的id属性设置为"callBtn",以便后续在JavaScript中方便找到该按钮。 然后,我们可以使用JavaScript来实现点击按钮后的拨打电话功能。在JavaScript中,我们可以使用`onclick`事件监听按钮点击事件,并使用`Window.open()`方法打开一个电话链接,如下所示: ```javascript document.getElementById("callBtn").onclick = function(){ window.open("tel:电话号码"); } ``` 其中,将"电话号码"替换为实际需要拨打的电话号码。 最后,在CSS中可以设置按钮的样式,使其看起来更加美观: ```css #callBtn { padding: 10px 20px; font-size: 16px; background-color: #337ab7; color: #fff; border: none; cursor: pointer; } ``` 这样,按钮就会呈现蓝色背景、白色文字的样式。 综上所述,我们可以通过HTML创建一个按钮,通过CSS设置样式,通过JavaScript监听按钮点击事件并使用`Window.open()`方法实现前端点击按钮拨打电话的功能。 ### 回答3: 前端点击按钮拨打电话是一种常见的操作,主要通过使用HTML和JavaScript来实现。 首先,在HTML中创建一个按钮元素,可以使用<button>标签并添加相应的id属性,以便通过JavaScript进行操作。 ```html <button id="phoneButton">拨打电话</button> ``` 然后,在JavaScript中,我们通过获取按钮元素的引用,监听按钮的点击事件,并在事件处理函数中执行拨打电话的操作。 ```javascript const phoneButton = document.getElementById('phoneButton'); phoneButton.addEventListener('click', callPhone); function callPhone() { // 获取要拨打的电话号码 const phoneNumber = '123456789'; // 使用浏览器内置的拨打电话功能 window.location.href = `tel:${phoneNumber}`; } ``` 在上述代码中,我们使用addEventListener方法来为按钮元素添加点击事件监听器,当按钮被点击时,会调用callPhone函数。 在callPhone函数中,我们获取要拨打的电话号码,这里简单使用一个固定的电话号码。然后,我们使用window.location.href来进行页面跳转,以启动浏览器内置的电话应用程序,并将电话号码作为参数传递,以便拨打电话。 这样,当用户点击按钮时,就会触发拨打电话的操作,实现前端点击按钮拨打电话的功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值