Microsoft Edge 中是否有与 window.clipboardData 等效的工具?

Bra*_*ley 4 javascript microsoft-edge

在我们的应用程序中,我们有一个自定义粘贴函数,它调用 window.clipboardData.getData("Text") 来获取当前剪贴板数据。然后它对该数据执行一些功能。在 Edge 中,window.clipboardData 未定义。看起来 getData 在“粘贴”事件中使用时确实有效,如下所示。

document.addEventListener("paste", function(e) {
    var test = e.clipboardData.getData("text/plain");
});
Run Code Online (Sandbox Code Playgroud)

我可能可以设计一种解决方法,涉及覆盖粘贴事件,但这并不理想。可以在事件外部调用的解决方案会更好。

顺便说一句,我读到 Edge 一度不支持剪贴板 API,但我的理解是这是固定的,所以请找到一些专门支持当前功能的东西(e.clipboardData 工作但不等同于 window.clipboardData 存在,如果这就是你的答案。

Kai*_*ido 5

像所有现代浏览器一样,Edge 使用官方ClipboardEvent::clipboardData

\n\n

\r\n
\r\n
inp.onpaste = evt =>\r\n  console.log(evt.clipboardData.getData(\'text\'));
Run Code Online (Sandbox Code Playgroud)\r\n
<input id="inp">
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

随它去吧。已弃用且非标准的window::clipboardData只能用作旧版本 IE 的遗留支持手段。

\n\n

至于您想要做什么(在没有用户交互的情况下粘贴),这违反了隐私规范建议。您将无法通过网络内容进行操作。您需要从高权限脚本(例如扩展)运行脚本。

\n\n
\n

\xe2\x80\xa2 实现不得让脚本创建合成剪贴板事件来访问真实的剪贴板数据(除非用户已将其配置为这样做)。

\n
\n

  • @PoulBak他们不能。MS 在 Edge 中修复了这个问题。 (2认同)