因为navigator.clipboard只能在https下使用,那使用ClipboardJS第三方库能在http下能将图片复制到剪切板上?

新手上路,请多包涵

因为navigator.clipboard只能在https下使用,那使用ClipboardJS第三方库能在http下能将图片复制到剪切板上?

阅读 2.3k
2 个回答

当然可以:

<template>
  <div>
    <a
      class="clip-btn"
      data-clipboard-target="#copytext"
      href="javascript:void(0);"
    >复制文本</a>
    <div id="copytext">
      <p>我是富文本</p>
      <img src="https://img2.baidu.com/it/u=1548765981,166433699&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=889" />
    </div>
  </div>
</template>

<script>
import Clipboard from 'clipboard';
export default {
  name: 'index',
  data () {
    return {
      btnCopy: '',
    }
  },
  mounted () {
    this.btnCopy = new Clipboard('.clip-btn', {
      target: function (trigger) {
        return document.getElementById('copytext');
      }
    })
    this.btnCopy.on('success', (e) => {
      console.log('Text:', e.text)
      this.$message({ message: '复制成功', type: 'success' })
      e.clearSelection()
    })
  },
  beforeDestroy () {
    // 销毁clipboard
    if (this.btnCopy && this.btnCopy.destroy) {
      this.btnCopy.destroy()
    }
  }
}
</script>

image.png
![上传中...]()

ClipboardJS 只能把一些内容复制到粘贴板吧,所以用到的并不一定是 navigator.clipboard 这个API。
从项目仓库中也可以看到并没有使用 navigator.clipboard ,而是使用了 document.execCommanddocument.execCommand 现在依旧被个浏览器所支持,并且不会受限于HTTPS.

另外这个仓库也有过使用 navigator.clipboard 替换 document.execCommand 的讨论 👉 Use the Clipboard API instead of execCommand · Issue #770 · zenorocha/clipboard.js

检索预览

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏