首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨浏览器的自定义clipboardData数据类型

跨浏览器的自定义clipboardData数据类型
EN

Stack Overflow用户
提问于 2017-11-30 05:17:59
回答 0查看 1K关注 0票数 2

我们尝试允许我们的用户在两个系统之间复制粘贴数据。从网页到电子应用程序。

用户将单击一个按钮,我们将在copy-to-clipboard的帮助下在该按钮上触发复制事件。

代码语言:javascript
复制
import copy from "copy-to-clipboard";

const copyHandler = (evt) => {
    evt.preventDefault();

    evt.clipboardData.setData("text/plain", url);
    evt.clipboardData.setData("mumbo/jumbo", JSON.stringify({
        foo: "bar"
    }));
}

document.addEventListener("copy", copyHandler);
copy();
document.removeEventListener("copy", copyHandler);

在Electron应用程序中,我们收听粘贴事件:

代码语言:javascript
复制
onPaste = (evt) => {
    if(evt.clipboardData.getData("mumbo/jumbo")) {
        // Handle custom data-type
    } else if(evt.clipboardData.getData("text/html")) {
        // Handle html
    } else {
        // Handle plain text
    }
}

当用户在Chrome中使用我们的网页时,一切都会正常工作。我们可以读取自定义数据类型的数据。但是当用户访问火狐的网页时,evt.clipboardData.getData("mumbo/jumbo")将返回未定义的内容。我们为text/plaintext/html设置的数据仍然可用。

如果我们将数据粘贴回Firefox,evt.clipboardData.getData("mumbo/jumbo")将正确地返回我们设置的数据。

我试着寻找关于这是否可以工作的信息,但是什么也找不到。浏览器之间是否支持自定义clipboardData数据类型,而我做错了什么?或者它永远不会起作用?

application/json数据类型做同样的事情在火狐和电子之间也不起作用。我们能够使用的唯一数据类型是text/plaintext/html,但这两种数据类型都已经用于其他目的。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47561981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档