javascript - Javascript dataTransfer.setData 在 Internet Explorer 中将文本添加到剪贴板
问题描述
我有一个具有可拖动 UI 元素的网页。使用 Internet Explorer 时,每当我拖动任何 UI 元素时,都会将一些文本添加到剪贴板。使用 Chrome 时不会发生这种情况。
添加的文本是其他操作需要的,但我不希望它被添加到剪贴板中,所以我在 Chrome 中的行为是我想要的。
我进行了一些故障排除,并且能够识别发生这种情况的代码,下面是可以复制的代码片段:
<!DOCTYPE html>
<html lang=en>
<script>
function dragstart_handler(ev) {
ev.dataTransfer.effectAllowed = 'move';
ev.dataTransfer.setData('TEXT', 'this text is added to clipboard');
}
</script>
<body>
<h1>Test</h1>
<div>
<p id="me" ondragstart="dragstart_handler(event);" draggable="true">Drag me</p>
</div>
</body>
</html>
在上面的示例中,如果您在 Internet Explorer 中运行代码片段,如果您拖动“Drag me”元素,您会注意到剪贴板中添加了一些文本,因此下次您 CTRL+V 时,该文本将被粘贴.
有没有人遇到过这个问题?有没有办法让我在两个浏览器上都有相同的行为?或者我将不得不改变我的实施?
解决方案
IE11 中的行为有点奇怪。我用 jsbin.com 测试了你的代码片段并开始注释掉
ev.dataTransfer.effectAllowed = 'move';
结果是我能够拖动元素#me
,并且没有通过 IE11 将任何内容添加到剪贴板中。
'TEXT'
此外,我通过DataTransfer
api成功检索了 的值。
我无法解释为什么上面描述的初始行为出现在 IE11 中。
推荐阅读
- android - 我的 AdMob 横幅与测试 id 一起使用,但与我的一起显示任何内容
- ruby - 再次调用 gem 方法得到 `NameError: uninitialized constant` 错误
- node.js - 在电子表格中插入新值时,在客户端上获取电子表格数据不会更新
- audiokit - AudioKit 是否提供高精度计时器?
- c - 具有自定义结构键的hasttable
- mysql - 无法检索数据库列表 MySQL 连接 Visual Studio 2017
- python - 试图从 django 中的 api 调用中选择对象
- python - 使用 Joblib 并行化将 python 脚本提交到 Sun Grid Engine
- reactjs - 在 React 中,setState 回调和在状态变量上使用 useEffect 有什么区别?
- datatable - 如何修复闪亮应用程序中 data.table 标题的位置