electron开发,文件无法拖放到渲染窗口的一种奇怪情况,附原因和解决方案

这两天又遇到一个奇怪情况,按理来说,electron应该是能支持几乎所有HTML5页面特性的,但是网页中常见的文件拖拽上传,也就是HTML5中的drop相关事件,封装到electron程序后,无法被触发执行。

下图就是这种奇怪的现象。

翻阅了大量资料,发现其他开发者可能都没遇到过这种情况,几乎搜不到同类问题。

如果确定html5代码没问题的话,那可能就是electron创建的窗口问题,但是翻阅electron官方文档,也没有看到相关介绍。

既然官方没提到拒绝文件拖拽到窗体,那大概率肯定就是能支持的,毕竟如果和正常HTML5特性冲突的话,一定会有说明,更何况这也算是一种常规需求了。

至此,一切明了,用普通powershell终端再次启动程序,效果就正常了。

最后,附上核心代码:

<!-- index.html -->
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello World!</title>
    <meta
      http-equiv="Content-Security-Policy"
      content="script-src 'self' 'unsafe-inline';"
    />
  </head>
  <body>
    <div class="content" id="content">文件拖到这个ID="content"的div里</div>

    <style>
      #content {
        margin: 0 auto;
        width: 96%;
        height: 200px;
        background-color: rgba(0, 0, 0, 0.02);
        border-radius: 10px;
        border: 3px dotted rgba(0, 0, 0, 0.3);
        display: flex;
        justify-content: center;
        align-items: center;
      }
    </style>

    <script src="renderer.js"></script>
  </body>
</html>
// renderer.js
document.getElementById("content").addEventListener("drop", (e) => {
  e.preventDefault();
  e.stopPropagation();
  for (const f of e.dataTransfer.files) {
    console.log("File(s) you dragged here: ", f.path);
  }
});
document.getElementById("content").addEventListener("dragover", (e) => {
  e.preventDefault();
  e.stopPropagation();
});
关于博主
骨灰级博客玩家
国内第一批90后网站站长/程序员
做过七年前端讲师
目前从事锦鲤观赏鱼电商行业
鱼贝贝锦鲤创始人
文章列表
1
给网站添加标题栏ico小图标的方法
给网站添加标题栏ico小图标的方法
2
你好,2019
你好,2019
3
Adobe Photoshop打开不开图片,提示“无法完成请求,因为找到不知名的或无效的JPEG标志符类型”错误的解决方法
Adobe Photoshop打开不开图片,提示“无法完成请求,因为找到不知名的或无效的JPEG标志符类型”错误的解决方法
4
网站中video方式引入视频资源,播放时提示The media could not be loaded, either because the server or network failed or because the format is not supported.的一种原因
网站中video方式引入视频资源,播放时提示The media could not be loaded, either because the server or network failed or because the format is not supported.的一种原因
5
鱼贝贝文件信息批量提取神器v1.3.0.250118 免费|绿色免安装|全功能离线版
鱼贝贝文件信息批量提取神器v1.3.0.250118 免费|绿色免安装|全功能离线版
最新评论
比比拉布
比比拉布
5月7日
太感谢了!!!!!!找了这么多的教程,只有你点出来了关键点——设计视图!!!!
Jake
Jake
3月7日
Halo 啊~麻烦更新下我的博客地址,原名:Jing Blog。麻烦更新如下: Jake Blog(后缀可以省略,也可以保留,看哪个风格适合) 网址:htt
评论于关于博主