gpt4 book ai didi

javascript - 新的剪贴板 API 访问非 `text/plain` 内容

转载 作者:行者123 更新时间:2023-12-02 02:49:28 25 4
gpt4 key购买 nike

使用新的 Clipboard API我可以轻松地将当前内容读取为文本 ( sample code ),并且 API 看起来可以支持多种“类型”,但至少在 Chrome 和 Edge 中它始终只返回 text/plain。这是新 API 中的错误/限制吗?还是我应该以不同的方式进行调用?

如何触发此行为的完整示例

注意:请确保事先复制富文本内容。 (这不是一个片段,因为新的剪贴板 API 似乎无法在 iframe 中工作)

<!DOCTYPE html>
<html>
<head> </head>
<body>
<div contenteditable>
paste into this area for old api
</div>
<button id="async">async api</button>
<script>
      document.querySelector("#async").addEventListener("click", (e) => {
navigator.permissions
.query({ name: "clipboard-read" })
.then((result) => {
// If permission to read the clipboard is granted or if the user will
// be prompted to allow it, we proceed.

if (result.state == "granted" || result.state == "prompt") {
navigator.clipboard.read().then((data) => {
console.log(data.map((d) => d.types)); // always returns only [['text/plain']]
});
}
});
});
document.querySelector("div").addEventListener("paste", (e) => {
console.log(e.clipboardData.types); // returns for the same content ["text/plain", "text/html"]
});
    </script>
</body>
</html>

最佳答案

Chrome 仍在努力解决这个问题:https://bugs.chromium.org/p/chromium/issues/detail?id=897289

目前,通过此 API 只能检索和写入 text/plainimage/png

不幸的是,他们还阻止了此功能对跨源框架的访问,这意味着几乎所有在线 js fiddler,包括 Stack-Snippets。

所以here is a link to a code-sandbox external window ,不确定这些东西会持续多久,下面是该沙箱的主要代码:

  button.onclick = async (evt) => {
const clipboard = navigator.clipboard;
const item = (await clipboard.read())[0];
const image =
item.types.includes("image/png") && (await item.getType("image/png"));
const text =
item.types.includes("text/plain") && item.getType("text/plain");

if (image) {
document.body.appendChild(new Image()).src = URL.createObjectURL(
image
);
}
console.log(text);
};

请注意,可通过 ClipboardEventclipboardData 访问的同步 API 可以访问这些类型。

关于javascript - 新的剪贴板 API 访问非 `text/plain` 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62293013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com