复制到剪贴板需要花费大量时间

2024-04-03

我有以下代码将 ~25MB 的数据复制到剪贴板:

// star time after populating HTML and Text
const start_time = new Date().getTime();
navigator.clipboard.write([
    new ClipboardItem({
        "text/html": new Blob([html], {
            type: "text/html",
        }),
        "text/plain": new Blob([text], {
            type: "text/plain",
        }),
    }),
]).then(() => {
    // end time after async clipbaord api method is completed
    const end_time = new Date().getTime();
    console.log("writing to clipboard : DONE in", (end_time - start_time) / 1000, "s");
});

而且需要 45 秒!

有没有理由clipboard.write(...)需要这么长时间才能做到?是否有某种关于如何改进这一点的建议,或者这只是不意味着复制大量数据?


这可能是因为它们在将您的 html 附加到剪贴板之前会对其进行清理,因此,例如,如果您的脚本尝试将恶意脚本作为 html 插入,则当用户将其粘贴到内容可编辑元素中时,它不会被执行。

清理 25MB 的 html 确实需要一些时间,但这应该并行完成,并且不会阻塞您的 UI。

不幸的是 StackSnippets 沙盒 iframe 不允许使用 Clipboard API,所以这里是一个故障项目 https://highfalutin-handy-count.glitch.me/您可以在其中看到输入确实已被清理。

故障代码:

btn.onclick = (evt) => {
  const dangerous_content = `<script>alert("I'm bad");<\/script><img src="" onerror="alert('Me too')">`;
  navigator.clipboard.write([
    new ClipboardItem({
      "text/html": new Blob([dangerous_content, "Hey"], { type: "text/html" })
    })
  ]);
};
document.onpaste = (evt) => {
  log.textContent = `raw "text/html" data from paste event: 
${ evt.clipboardData.getData("text/html") }`;
};

Output:

作为富文本:brokenHey
作为原始标记:<meta charset='utf-8'><img src="https://highfalutin-handy-count.glitch.me/" alt="broken">Hey

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复制到剪贴板需要花费大量时间 的相关文章

  • 自动调整Google网站嵌入代码的高度(html)

    我正在使用 Google 协作平台嵌入 HTML 代码 将代码粘贴到 从网络嵌入 窗口中 输出的长度是可变的 我希望有一种方法可以动态调整父级的高度iframeGoogle 协作平台用于托管我的 HTML 我知道我可以使用 Google 协
  • 在 JavaScript 中生成 RSA 密钥对

    我最近发现了这个 RSA JavaScript 库 http www ohdave com rsa http www ohdave com rsa 但是 它要求预先生成密钥 这是我的问题 问题 我想在 JavaScript 中生成 RSA
  • 滚动时输入自动完成位置错误(chrome)

    我在输入文本的默认自动完成功能方面遇到了一些麻烦 滚动时它不会相应移动 我希望自动完成文本保留在输入的正下方 有办法做到这一点吗 我在 Chrome 浏览器版本 57 0 2987 133 中发生这种情况 fiddle https jsfi
  • html 表格单元格的条件格式

    是否有现成的解决方案可以对 HTML 表格进行条件格式设置 通过条件格式 我更感兴趣的是根据该列或其他列 在同一个表中 的值 数字 将不同的颜色作为单元格背景 类似于我们在 Excel 条件格式 gt 色阶 gt 红黄绿中的内容 我想在通过
  • 以一定时间间隔连续重复运行 JavaScript 函数

    这是我的第一个问题 希望您尽快回答 我想要代码连续重复一个函数 我尝试了一些代码 但没有成功 我尝试了这段代码 我想在一段时间后重复这个功能 我努力了setInterval and setTimeout 但是 我还没有收到结果 这将重复该任
  • 启用/禁用由用户输入确定的复选框

    我有一个简单的表单 用户可以在其中输入他的联系号码 如果联系号码以 07 开头 则该复选框已启用 其他我需要禁用它的复选框 我已经编写了一些代码 但我面临的问题是 当用户键入 01 时 它会被禁用 但如果他们继续在 01 之后添加任何其他数
  • javascript jquery 使用脚本更改脚本的src

    我有一个 JavaScript 脚本 它有一个 src 元素 这个 src 是一个 url 我想使用 javascript 更改它 一次更改为其他内容 或者动态创建它 使用 javascript jquery 动态创建脚本元素的最佳方法是什
  • 如何动态突出显示网页上的字符串?

    我想创建带有 url 的页面 例如 http xyzcorp schedules 2015Aug24 Aug28 Jim Hawkins http xyzcorp schedules 2015Aug24 Aug28 Billy Bones
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 使用文件 API 将资源加载到 Three.js 中

    我想创建导入 3D 模型以在浏览器中查看的功能 方法是使用File API http www html5rocks com en tutorials file dndfiles Three js 加载器在我托管的文件上运行良好 我的理解是加
  • 有没有办法将变量从 javascript 导入到 sass 或反之亦然?

    我正在制作一个依赖于块概念的 CSS 网格系统 所以我有一个基本文件 例如 max columns 4 block width 220px block height 150px block margin 10px 它被 mixin 使用 m
  • 如何使用 vanilla JS 实现可维护的反应式 UI

    今天我遇到了一个问题 可以通过使用像 Vue 这样的反应式和状态管理框架来轻松解决 遗憾的是 无法使用它 以下 简化 情况 链接到代码笔 https codepen io theiaz pen BazErKV 我们有一个服务器渲染的页面 其
  • 获取点击的的DOM路径

    HTML div class lol a class rightArrow href a div 伪代码 rightArrow click function rightArrowParents this dom dom is the pse
  • 计算文本选择的 xy 位置

    我正在尝试使用 DOM 元素创建自己的文本选择 是的 我的意思是当您在此元素中选择文本时 您会在文本后面看到蓝色背景 这个想法是停止默认行为 蓝色 并使用我自己的元素来完成工作 方法是找到选择的 xy 位置 然后放置绝对定位的元素 我希望能
  • 如何在 ASP.NET MVC 3 的 Razor 视图中编码嵌入的 javascript?

    如何在以下上下文中正确编码 JavaScript 我的 JSON 对象中的值是由应用程序管理员设置的 因此我假设它们需要正确编码 对于 HTML 和 JavaScript 都是如此 我在用着System Web Script Seriali
  • 如何处理requireJs超时错误?

    我正在使用 require js 作为加载框架编写一个移动混合应用程序 我遇到加载错误的问题 我想做的是在设备离线且无法下载在屏幕上显示地图所需的 google 地图 API 脚本时设置后备解决方案 我得到的只是 Uncaught Erro
  • Ember Data 中出现“超出最大调用堆栈大小”错误的原因可能是什么?

    Ember 发布新版本 3 6 0 后 我开始在控制台中收到错误 rsvp js 24 未捕获 RangeError 超出最大调用堆栈大小 在 WeakMap get 在 getCacheFor metal js 25 在 Computed
  • 强制输入数字小数位

    我想强制
  • Flowtype 属性“msg”缺失为 null 或未定义

    我发现 Flow 很难用 我明白那个Array find可以返回或未定义 因此 通过阅读以下内容 github Array find on Array 引发 https github com facebook flow issues 351
  • 使用 JQuery 根据下拉列表选择的值显示/隐藏控件

    我正在尝试使用 JQuery 根据下拉菜单的选定索引显示 隐藏 div 标签 但它不起作用 任何帮助将不胜感激 Thanks

随机推荐

  • Boost Spirit x3 - 惰性解析器

    有最新的吗boost spirit x3实施lazy解析器 我发现它在文档 https www boost org doc libs develop libs spirit doc x3 html spirit x3 quick refer
  • 对于移动 Safari 来说 AJAX 响应太大?

    我在调试移动 Safari 的 Web 应用程序时遇到了一些问题 该 Web 应用程序是相当复杂的服务器端模拟工具的前端 该网络应用程序的工作原理概述如下 用户将看到一个屏幕 他们可以在其中填写要执行的模拟的值 用户单击 运行模拟 此时将对
  • 如何获取 Nodejs 中显示的 console.log 行号?

    有一个旧的应用程序 它使用以下命令打印出大量消息console log 但我就是找不到哪些文件和行console log叫做 有没有办法连接到应用程序并显示文件名和行号 每个调用都有完整的堆栈跟踪有点吵 我刚刚改进了 noppa 的解决方案
  • 如何使用php传递和访问数组变量

    我有一个数组 param 在给出 Print r 时 输出如下 Array pattern gt status gt Array 0 gt 0 1 gt 4 我必须将状态值传递给一个函数 例如 function value action p
  • 如何使用ggplot2从geom_tile(热图)中删除白线

    我无法去除热图中图块之间的白线 下面是我的代码和图片 以前有人遇到过这种情况吗 t lt ggplot Drug heatmap df final aes x reorder Drug Total Deaths y Start Date f
  • 分配内存的嵌套结构

    gcc c89 我在这一行得到堆栈转储 strcpy comp gt persons gt name Joe 但是 我已经分配了内存 所以不确定为什么我会得到它 我在这里错过了什么吗 非常感谢您的任何建议 include
  • 将 WooCommerce 订单项自定义字段总和保存为新元数据

    当在此 WooCommerce 商店中订购特定产品时 两个元值将添加到订单中 存储元值的两个字段位于wp woocommerce order itemmeta 元键是 quantity assemblycost 我想在下新订单时以编程方式创
  • 从字符串 Django 模板中删除第一个字符

    我知道这个问题已经被问过多次 但每个人都达到的解决方案 和文档 似乎并不适合我 尝试删除第一个字符 Code is picture picture path slice 1 但结果仍然是 DOF mrD5T49 jpg 试图获得前导点 我是
  • ActiveMQ:如何以编程方式监控嵌入式代理

    我想从代码内部监控嵌入式 ActiveMQ 5 8 代理 如何才能做到这一点 我需要 JMX 连接吗 我想防止暴露 JMX 有没有办法访问org apache activemq broker jmx http activemq apache
  • 在一个请求中创建多个项目的 RESTful 方式

    我正在开发一个小型客户端服务器程序来收集订单 我想以 REST ful 方式 来做到这一点 我想做的是 收集所有订单行 产品和数量 并将完整订单发送到服务器 目前我看到有两种选择可以做到这一点 将每个订单行发送到服务器 POST qty 和
  • 在 AngularJS 中使用逗号作为列表分隔符

    我需要创建一个以逗号分隔的项目列表 li b email last b li 根据 AngularJS 文档 表达式中不允许使用控制流语句 这就是为什么我的 last 不起作用 是否有其他方法来创建逗号分隔的列表 EDIT 1有没有比以下更
  • SQLite 并插入 UTC 格式的当前日期

    如何在 sqlite 数据库上使用 SQL 语句插入 UTC 格式的当前日期 我找到了NOW函数 但它的格式是什么 这将在移动设备上进行 因此每个人都会有不同的区域设置 但是 我需要标准时间格式 因为设备会将日期与我的服务器进行比较 另外
  • Python - DM 用户 Discord 机器人

    我正在 Python 中开发一个 User Discord 机器人 如果机器人所有者输入 DM user然后机器人会私信所有者提到的用户 client event async def on message message if messag
  • 是否可以在同一个 html 页面中多次使用相对位置?

    我在主页上使用 相对位置 和 绝对位置 我有一个使用上述母版页的页面 并且我尝试在此页面中再次对其他 2 个元素使用 相对位置 和 绝对位置 但该页面中下面的元素 绝对位置 是不是根据其上方的元素放置的 相对位置 而是指母版页中元素的 相对
  • 如何在 JavaFX 中将 GUI 覆盖到 3D 场景上?

    我在 JavaFX 中有一个 3D 场景 需要在 3D 场景上覆盖 GUI 我尝试向场景添加按钮和文本 但它们始终作为 3D 对象出现在 3D 视图中 我环顾四周 没有找到该怎么做 唯一的解决方法是创建一个全新的窗口并将设置放在那里 但在这
  • Android Facebook - 获取空个人资料

    第一次使用 Facebook SDK 我无法获取用户个人资料 它始终为空 怎么了 btnFbWidget LoginButton findViewById R id btnFbWidget btnFbWidget setReadPermis
  • 删除indexedDB对象存储中特定索引值的所有记录

    对于数组键为的对象存储 a b where a也是一个索引 有没有更有效的方法来删除特定值的所有记录a而不是在索引上打开游标a并通过光标逐步删除每条记录 有没有办法只为索引定义键范围 或者只为索引定义键范围a然后离开b打开任何值 以便可以删
  • 如何在 AngularJS 和 Jasmine 中对 $http 进行单元测试

    这是我的代码 因为代码很长 所以我做了一个 Plunker describe create function it Should be defined function expect BaseService create toBeDefin
  • 导入特定于版本的 python 模块的最佳方法

    对于在特定于版本的 python 中导入模块 哪种方法最有意义 我的用例是 我正在编写将部署到 python 2 3 环境中的代码 并在几个月内升级到 python 2 5 这 if sys version info 2 gt 2 5 fr
  • 复制到剪贴板需要花费大量时间

    我有以下代码将 25MB 的数据复制到剪贴板 star time after populating HTML and Text const start time new Date getTime navigator clipboard wr