vue复制链接操作

news2024/12/30 0:56:56

vue复制链接操作

  • 使用clipboard
    • clipboard属性
    • 代码实现
  • 发布测试出现问题
    • 问题分析
    • 解决方案
    • 最终代码实现
    • document.execCommand扩展
      • 常用例子

  • 给要复制的文本或者按钮加上点击事件后,并将要复制的值传过来

使用clipboard

clipboard属性

解释
read从剪贴板读取数据(比如图片)
readText从操作系统读取文
write写入任意数据至操作系统剪贴板
writeText写入文本至操作系统剪贴板

代码实现

 async copyLink(val) {
   //val 你要复制的文本
   return navigator.clipboard.writeText(val);
}
  • 成功实现

发布测试出现问题

TypeError: Cannot read properties of undefined (reading ‘writeText’)

问题分析

在这里插入图片描述

Navigator的clipboard属性是有使用限制的
像我们的本地localhost或者https都属于安全上下文
而测试的机器里,因为是自己的ip域,并不是https,所以就无法读取到clipboard

解决方案

  • 检测是否存在于安全上下文、以及clipboard是否可用
  • window.isSecureContext属性返回一个布尔值,表示当前窗口是否处在加密环境。
  • 如果是 HTTPS 协议,就是true,否则就是false。
    在这里插入图片描述
  • 代码增加兼容非安全域实现
  • 在安全域下使用 navigator.clipboard 提升效率,非安全域退回到 document.execCommand(“copy”)

最终代码实现

  if (navigator.clipboard && window.isSecureContext) {
      this.$message.success("复制成功");
      return navigator.clipboard.writeText(val);
   }else{
     // 创建text area
        const textArea = document.createElement("textarea");
        textArea.value = val;
        // 使text area不在viewport,同时设置不可见
        document.body.appendChild(textArea);
        textArea.focus();
        textArea.select();
        this.$message.success("复制成功");
        return new Promise((res, rej) => {
          // 执行复制命令并移除文本框
          document.execCommand("copy") ? res() : rej();
          textArea.remove();
        });
   }

document.execCommand扩展

调用execCommand()可以实现浏览器菜单的很多功能. 如保存文件,打开新文件,撤消、重做操作…等等.
有了这个方法,就可以很容易的实现网页中的文本编辑器.

document.execCommand(sCommand[,交互方式, 动态参数])
- sCommand为指令参数(如下例中的”2D-Position”)
- 交互方式参数如果是true的话将显示对话框,如果为false的话,则不显示对话框
- 动态参数一般为一可用值或属性值

常用例子

 <input type=button value=剪切 οnclick=document.execCommand('Cut')>
 
 <input type=button value=拷贝 οnclick=document.execCommand('Copy')>
 
 <input type=button value=粘贴 οnclick=document.execCommand('Paste')>
 
 <input type=button value=撤消 οnclick=document.execCommand('Undo')>
 
 <input type=button value=删除 οnclick=document.execCommand('Delete')>
 
 <input type=button value=黑体 οnclick=document.execCommand('Bold')>
 
 <input type=button value=斜体 οnclick=document.execCommand('Italic')>
 
 <input type=button value=下划线 οnclick=document.execCommand('Underline')>
 
 <input type=button value=停止 οnclick=document.execCommand('stop')>
 
 <input type=button value=保存 οnclick=document.execCommand('SaveAs')>
 
 <input type=button value=另存为 οnclick=document.execCommand('Saveas',false,'c:""test.htm')>
 
 <input type=button value=字体 οnclick=document.execCommand('FontName',false,fn)>
 
 <input type=button value=字体大小 οnclick=document.execCommand('FontSize',false,fs)>
 
 <input type=button value=刷新 οnclick=document.execCommand('refresh',false,0)> 

/*该function执行copy指令*/

function fn_doufucopy() {

edit.select();

document.execCommand('Copy');

}

 

/*该function执行paste指令*/

function fn_doufupaste() {

tt.focus();

document.execCommand('paste');

}

 

/*该function用来创建一个超链接*/

function fn_creatlink() {

document.execCommand('CreateLink',true,'true');//弹出一个对话框输入URL

//document.execCommand('CreateLink',false,'http://www.51js.com');

}

 

/*该function用来将选中的区块设为指定的背景色*/

 

function fn_change_backcolor() {

document.execCommand('BackColor',true,'#FFbbDD');//true或false都可以

}

 

/*该function用来将选中的区块设为指定的前景色,改变选中区块的字体大小,改变字体,字体变粗变斜*/

function fn_change_forecolor() {

//指定前景色

document.execCommand('ForeColor',false,'#BBDDCC');//true或false都可以

//指定背景色

document.execCommand('FontSize',false,7);     //true或false都可以

//字体必须是系统支持的字体

document.execCommand('FontName',false,'标楷体');     //true或false都可以

//字体变粗

document.execCommand('Bold');

//变斜体

document.execCommand('Italic');

}

 

/*该function用来将选中的区块加上不同的线条*/

function fn_change_selection()

{

//将选中的文字加下划线

document.execCommand('Underline');

//在选中的文字上划粗线

document.execCommand('StrikeThrough');

//将选中的部分文字变细

document.execCommand('SuperScript');

//将选中区块的下划线取消掉

document.execCommand('Underline');

}

 

/*该function用来将选中的区块排成不同的格式*/

function fn_format() {

//有序列排列

document.execCommand('InsertOrderedList');

//实心无序列排列

document.execCommand('InsertUnorderedList');

//空心无序列排列

document.execCommand('Indent');

}

 

/*该function用来将选中的区块剪下或是删除掉*/

function fn_CutOrDel() {

//删除选中的区块

//document.execCommand('Delete');

//剪下选中的区块

document.execCommand('Cut');

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1933221.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码重构思想和VSCode编辑器中代码重构插件

目录 一、参考资料 二、VSCode重构插件 1、小浣熊 &#xff08;1&#xff09;功能 &#xff08;2&#xff09;使用说明 2、Code Spell Checker 3、Abracadabra, refactor this! &#xff08;1&#xff09;重命名变量或函数名称 &#xff08;2&#xff09;提取变量 &a…

【STC89C51单片机】定时器/计数器的理解

目录 定时器/计数器1. 定时器怎么定时简单理解&#xff08;加1经过了多少时间&#xff09;什么是时钟周期什么是机器周期 2.如何设置定时基本结构相关寄存器1. TMOD寄存器2. TCON寄存器 代码示例 定时器/计数器 STC89C51单片机的定时器和计数器&#xff08;Timers and Counter…

Talk|OSU汪博石:Transformer模型能否进行隐式的推理?关于Grokking和泛化的深入探索

本期为TechBeat人工智能社区第609期线上Talk。 北京时间7月17日(周三)20:00&#xff0c;俄亥俄州立大学博士生—汪博石的Talk已经准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “Transformer模型能否进行隐式的推理&#xff1f;关于Grokking和泛化的深入…

【leetcode】 字符串相乘(大数相乘、相加)

记录一下大数相乘相加方法&#xff1a; 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 注意&#xff1a;不能使用任何内置的 BigInteger 库或直接将输入转换为整数。 示例 1: 输入: nu…

【C语言】联合体(union)

文章目录 1.联合体的含义2. 联合体的声明3. 联合体大小的计算4. 联合体的特点 1.联合体的含义 联合体也叫做共用体&#xff0c;是指联合体的所有成员共用同一块内存空间。这也就说明了&#xff0c;联合体的大小至少是其成员所占空间的最大值。 2. 联合体的声明 #include<…

CSS基础学习之元素定位(6)

目录 1、定位类型 2、取值 2.1、static 2.2、relative 2.3、absolute 2.4、fixed 2.5、stickty 3、示例 3.1、相对定位(relative) 3.2、绝对定位&#xff08;absolute&#xff09; 3.3、固定定位&#xff08;fixed&#xff09; 3.4、粘性定位&#xff08;sticky&…

力扣第九题(回文数)

9. 回文数 - 力扣&#xff08;LeetCode&#xff09; 提示 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数 是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读…

Husco在汽车自动变速器电磁阀总产量超1200万台最大汽车电磁阀线圈制造商Amisco同时高产量增长

Husco Inc.是一家位于美国威斯康星州的汽车零部件制造商&#xff0c;专门生产汽车自动变速器电磁阀。根据最新的数据&#xff0c;Husco的汽车自动变速器电磁阀总产量已经超过了1200万台&#xff0c;成为全球最大的汽车电磁阀生产商之一。 与此同时&#xff0c;Amisco是一家专门…

(21)起落架/可伸缩相机支架

文章目录 前言 1 连接到自动驾驶仪 2 通过任务规划器设置 3 其他参数 4 参数说明 前言 Copter 和 Plane 支持可伸缩的起落架/相机支架&#xff0c;由伺服机制激活&#xff08;如 Hobby King 出售的用于copters 的这些&#xff09;。齿轮/支架可以手动缩回或用一个辅助开关…

STM32 IAP 需要关注的一些事

1、首先要知道STM32的程序是如何分布在FLASH中的。 2、升级的时候涉及到两个程序&#xff0c;一个是bootloader&#xff0c;一个是user程序&#xff0c;这两个程序的功能分别的什么作用的&#xff1f; 3、编译的固件是怎么分布的&#xff1f;通过那个配置文件去指导编译器去排布…

Stable Diffusion:解锁AI绘画新纪元的保姆级入门指南

在这个数字艺术日新月异的时代&#xff0c;Stable Diffusion如同一股清新的风&#xff0c;吹散了传统绘画的界限&#xff0c;让每个人都能成为创意无限的数字艺术家。作为一款基于Transformer结构的文本到图像生成模型&#xff0c;Stable Diffusion以其惊人的生成速度、细腻的画…

Android 12系统源码_存储(二)StorageManagerService服务

前言 在 Android 系统中&#xff0c;StorageManagerService是一个用于获取存储设备信息和管理存储设备的服务。它提供了一系列方法&#xff0c;可以获取当前挂载的存储设备信息&#xff0c;以及对存储设备进行挂载和卸载操作。 一、Storage存储模块介绍 1.1、StorageManager…

思路|如何利用oneNote钓鱼?

本文仅用于技术研究学习&#xff0c;请遵守相关法律&#xff0c;禁止使用本文所提及的相关技术开展非法攻击行为&#xff0c;由于传播、利用本文所提供的信息而造成任何不良后果及损失&#xff0c;与本账号及作者无关。 本文来源无问社区&#xff0c;更多实战内容&#xff0c;…

GuLi商城-商品服务-API-属性分组-分组修改级联选择器回显

前端代码:略 后端回显接口: 递归方法: @Override publi

Airtest封装的Tidevice接口有多好用(一)

一、前言 很多同学都有在Windows电脑上连接本地iOS设备去进行测试的需求&#xff0c;其中tidevice库是大家在Windows上使用的最多的iOS通信库&#xff0c;其中有一些接口是我们比较常用的&#xff0c;所以Airtest这边对一些常用的接口进行了封装&#xff0c;供大家日常写脚本的…

【web】-反序列化-to_string

<?php highlight_file(__FILE__); class A{public $s;public function __destruct(){echo "hello".$this->s;}} class B{public $cmd;public function __toString(){system($this->cmd);return 1;} } unserialize($_GET[code]); __toString()当对象被当着…

Java小白入门到实战应用教程-变量

变量 说明 变量是存储数据的基础单元。通过变量我们可以在代码去获取变量的数据、操作变量的数据。换种说法就是数据的存储体。 比如我们现在声明一个变量&#xff0c;并用它来存放一个数字1&#xff1b; int a 1;那么此时这个变量的值就为1&#xff0c;也可以理解成这个变…

QT应用编程: window下QT程序异常捕获并生成DMP文件、PDB文件

文章目录 main.cpp代码捕获异常 生成dmp文件和pdb文件DebugTest生成错误代码注意 分析软件崩溃&#xff0c;除了需要dmp&#xff0c;还需要这个pdb文件 dmp&#xff0c;文件记录了崩溃的信息&#xff0c;而pdb&#xff08;代码工程数据库&#xff09;&#xff0c;则包含了你写的…

【机器学习-00】机器学习是什么?

在科技飞速发展的今天&#xff0c;机器学习已成为一个热门话题&#xff0c;广泛应用于各个行业和领域。那么&#xff0c;机器学习到底是什么&#xff1f;它又是如何工作的&#xff1f;本文将深入探讨机器学习的定义、原理及其在各领域的应用&#xff0c;带领读者走进这个神秘而…

FGF18:骨关节炎治疗靶标

成纤维细胞生长因子18&#xff08;FGF18&#xff09;属于FGF8亚家族成员&#xff0c;在细胞增殖、细胞分化和细胞迁移的调节中起重要作用&#xff0c;是正常骨化和骨骼发育所需&#xff0c;同时刺激肝脏和肠道增殖。 &#xff08;数据来源AlphaFold&#xff09; FGF18由207个氨…