本文概述
- 处理拖放
- 关于Google Chrome浏览器中的此功能
HTML5工作草案规范包括对拖放的支持, 因此我们不需要任何第三方Javascript库来实现此目的。拖放是改善用户体验的一项重要功能, 许多本地应用程序都可以使用此功能, 因此你可能希望将此功能实现到混合桌面应用程序中。
处理拖放 如前所述, HTML5提供了对拖放的支持, 因此, 为了处理DOM元素中的拖放事件, 可以使用以下代码段:
<
style>
#drag-file {background-color: blue;
color:white;
text-align: center;
width:300px;
height:300px;
}<
/style>
<
div id="drag-file">
<
p>
Drag your files here<
/p>
<
/div>
<
script>
(function () {var holder = document.getElementById('drag-file');
holder.ondragover = () =>
{return false;
};
holder.ondragleave = () =>
{return false;
};
holder.ondragend = () =>
{return false;
};
holder.ondrop = (e) =>
{e.preventDefault();
for (let f of e.dataTransfer.files) {console.log('File(s) you dragged here: ', f.path)}return false;
};
})();
<
/script>
我们将一些事件侦听器添加到所需的DOM元素中。它既可以是文档, 也可以是span元素。当用户将文件放在元素上时, 将触发ondrop事件。
请注意, 将ondragover, ondragleave和ondragend的返回值设置为false很重要, 以防止出现默认行为(例如, 使用图像时, 如果拖动图像, 则当前文档将消失并且将被图像替换, 并且你无法背部)。
files数组中的每个对象都具有以下结构:
{"lastModified": 1476893272627, "lastModifiedDate": "WedOct19 2016 18: 0 7: 52GMT+0200(Mitteleurop?ischeSommerzeit)", "name": "myfilename.png", "path": "C:\path-to\myfilename.png", "size": 10648, "type": "image/png", "webkitRelativePath": ""}
上一个代码片段的实现应具有以下结果:
文章图片
关于Google Chrome浏览器中的此功能 如果你很专心, 则可能已经注意到此功能不需要任何内置或外部模块。因此, 如果可以像在浏览器中使用Javascript一样进行发布, 那么发布这篇文章有什么意义呢?答案很简单, 它也适用, 但是你不会收到相同的信息。
如果在支持这些事件的任何浏览器中执行显示的代码段, 则会发现该对象具有不同的结构:
{"lastModified": 1476893272627, "lastModifiedDate": "WedOct19 2016 18: 0 7: 52GMT+0200(Mitteleurop?ischeSommerzeit)", "name": "myfilename.png", "size": 10648, "type": "image/png", "webkitRelativePath": ""}
如你在Google Chrome浏览器或任何更新的浏览器中所看到的, 其中不包含path属性(文件的完整路径)。发生这种情况的原因是, 根据HTML5的规范, 如果使用JavaScript操作其值字符串, 则文件上传控件不应显示所选文件的真实本地路径。 Internet Explorer 8中已经实现了此要求-仅当包含控件的页面添加到浏览器的受信任网站集时, 才会显示文件的真实路径。
幸运的是, Electron不仅是Web浏览器, 因此它消除了此已知限制(某种程度上, 它不是限制, 而是一种安全功能, 在这种情况下我们不需要此功能, 因为桌面应用程序显然有权修改系统)。
【如何处理Electron Framework中的” 拖放文件” 功能】玩得开心 !
推荐阅读
- 如何在Android中实现表情符号(SmileyRating)等级栏
- 如何在Electron Framework中使用React Dev Tools
- Matreshka.js(创建单页应用程序的简单JavaScript框架)
- Prepack(用于JavaScript的部分评估程序,可生成有效的JavaScript)
- Carbon(创建和共享代码段精美图片的在线工具)
- Keeweb(与KeePass兼容的免费跨平台密码管理器)
- AppleScript-等待shell脚本完成
- Android字体可下载,我如何从常规更改为semibold
- 找不到模块&#39;./app/server.app.module.ngfactory&#39;