首页 > 其他分享 >解决http下navigator.clipboard为undefined的问题

解决http下navigator.clipboard为undefined的问题

时间:2023-04-21 20:14:58浏览次数:28  
标签:document http undefined execCommand window clipboard input copy

clipboard只有在安全域名下才可以访问(https、localhost), 而http域名下只能得到undefined。
例如现在想要实现点击"分享"按钮,将当前页面的url复制到剪贴板:

  const clipboard = navigator.clipboard
  if (clipboard) {
    clipboard.writeText(window.location.href)
  }

在本地localhost测试是可以的,但是部署到服务器上后,由于部署的服务器使用的是http协议,所以clipboard为undefined。
解决方法:
可以考虑使用document.execCommand('copy')来实现复制到剪贴板的功能。
创建input写入待复制的文本,选定文本后执行document.execCommand('copy')进行复制:

  const clipboard = navigator.clipboard || {
    writeText: (text) => {
      const input = document.createElement('input')
      input.value = text
      document.body.appendChild(input)
      input.select()
      document.execCommand('copy')
      document.body.removeChild(input)
    }
  }
  if (clipboard) {
    clipboard.writeText(window.location.href)
  }

也可以使用document.execCommand('copy')触发复制事件后,再在复制事件中对剪贴板进行操作:

export default {
  methods: {
    share() {
      this.isShare = true
      document.execCommand('copy')
      setTimeout(() => { this.isShare = false }, 100)
    }
  },
  created () {
    this.copyListener = (event) => {
      if (!this.isShare) { return }
      const clipboardData = event.clipboardData || window.clipboardData
      clipboardData.setData('text', window.location.href)
      event.preventDefault()
    }
    window.addEventListener('copy', this.copyListener)
  },
  beforeDestroy () {
    window.removeEventListener('copy', this.copyListener)
  }
}

标签:document,http,undefined,execCommand,window,clipboard,input,copy
From: https://www.cnblogs.com/lxm-cnblog/p/17341614.html

相关文章

  • 关于Nginx作为http-web服务器时对404错误页面的配置
    当我们访问一下Ngin部署的网站时,如果访问一个不存在的资源时,默认服务端会返回404错误,如下所示其实这个页面,我们也是可以自己创建一个页面作为404的返回的,可以通过即可以通过error_page code ...[=[response]] uri;进行配置其他说明:关于error_page指定能写的位置段为:ht......
  • Qt使用Http协议进行通信
    原文地址blog.csdn.net原文链接在使用Qt框架进行应用开发的过程中,很多时候需要进行客户端与服务端的网络通信,这时候就需要Qt的internet模块。而网络通信中最常用的协议就是http协议,Qt对http协议的调用进行了封装,使用非常方便。这里对常用的http请求demo做一下总结,方便大家参......
  • java 实现简单的http服务器
    1、废话不多说,代码如下packagecom.linhuaming.test;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.ServerSocket;importjava.net.Socket;/***http服务器测试*/publicclassHttpServerTest{publi......
  • Socks5代理与HTTP代理:基本概念、工作原理和在网络应用中的应用
      在互联网上,代理服务器是一种非常重要的技术手段,可以实现许多网络应用的高效和安全运行。Socks5代理和HTTP代理是两种常见的代理服务器类型,它们在网络应用中都有着重要的作用。本文将介绍Socks5代理和HTTP代理的基本概念、工作原理以及在网络应用中的应用。第一部分:Socks5代理......
  • https
    (12条消息)httplib库的使用(支持http/https)(一)_秋杪的博客-CSDN博客 ip.dst== &&tcp&&tcp.port==0x9527#include<stdio.h>#include<stdlib.h>#include<stdint.h>#include<string.h>#defineCPPHTTPLIB_OPENSSL_SUPPORT#include&......
  • XMLHttpRequest实现异步请求
    XMLHttpRequest基本概念XMLHttpRequest是一种用于在Web浏览器和服务器之间进行异步数据交换的技术。它可以在不重新加载页面的情况下向服务器发送HTTP请求,接收和处理来自服务器的响应,并更新网页的部分内容。XMLHttpRequest也被称为XHR,它是一种在Web开发中常用的JavaScriptAPI。......
  • C# 爬虫 HttpClient 之 https 踩坑记录
    背景有一个网页(https),请求返回是一串json,可通过模拟浏览器获取,也可以通过api请求获取,其中通过C#的httpclient的Get发起请求,会出现不定时的返回结果乱码请求代码[HttpPost(Name="GetTestNoParams")]publicasyncTask<string>GetTestNoParams(stringurl){......
  • HTTP 协议
    概念:HyperTextTransferProtocol,超文本传输协议规定了浏览器和服务器之间的数据传输的规则HTTP协议特点基于TCP协议:面向连接,安全基于请求模型的:一次请求对应一次响应HTTP协议是无状态的协议:对于事务的处理没有记忆能力。每次请求-响应都是独立的。缺点:多次请求间不能共......
  • HTTP协议的基本概念
    HTTP协议简介HTTP(HyperTextTransferProtocol,超文本传输协议)是一种用于传输超媒体文档(例如HTML)的应用层协议。HTTP协议是一个无状态的协议,意味着服务器并不会记住任何之前的请求和响应。HTTP协议基于客户端-服务器架构模型,客户端发送一个请求到服务器,然后服务器处理请求并发......
  • day 04 4.1web开发核心之http协议
    web开发核心之http协议http协议1.什么是请求头请求体,响应头响应体2.URL地址包括什么3.get请求和post请求到底是什么4.Content-Type是什么【一】简介HTTP协议是HyperTextTransferProtocol(超文本传输协议)的缩写,是用于万维网(WWW:WorldWideWeb)服务器与本地浏览......