04_拖动文件渲染在页面中

  新建一个文件夹,跟之前一样,在 Vscode 终端里输入 yarn create electron-app Drag

  在 index.html 添加以下代码,JS 文件夹和 render.js 都是新创建的:

  首先,css 文件一般和 html 结合使用,相当于 html 是结构,而 css 是样式。在 index.css添加以下代码:

  在 index.js 里面添加以下代码,这个是与 node 接口不可缺少的:

  之后在 render.js 输入:

let holder = document.querySelector('#holder')
let readlist = document.querySelector('#readlist')
let fs = require('fs')

/* drop 事件负责处理文件放置(释放)后的操作,而 dragover 事件用于控制放置前的交互和状态。这两个事件配合使用能够完整地处理拖放操作 */
holder.addEventListener('drop', (e) => {      // 事件监听,如果有拖动现象就执行回调函数
    e.preventDefault();     // 阻止事件默认方式,默认是拖到窗口会自动打开
    e.stopPropagation();    // 防止冒泡
    console.log(e); // 将e对象打印控制台
    
    // 打印每个文件对象的信息并输出文件路径 
    for(const file of e.dataTransfer.files) {  // dataTransfer 对象通常用于在拖放操作中传递数据
        console.log(file)
        console.log('文件路径:', file.path)
        fs.readFile(file.path, (err, data) => {     // 读取路径
            if(err) {
                console.log(err);
            }
            else{
                /* 创建一个新的 div 元素,并给它设置类名和内部内容,然后将它添加到 readlist 元素中 */
                let newDiv = document.createElement('div')  // 创建一个新的 div 元素节点,并将其存储在变量 newDiv 中
                newDiv.className = "readfile"
                newDiv.innerHTML = `
                    <h3>${file.name}</h3>
                    <pre>${data}</pre>
                `
                readlist.appendChild(newDiv)
            }
        })
    }
});

holder.addEventListener('dragover', (e) => {
    e.preventDefault();
    e.stopPropagation(); 
});

  最后在 Vscode 终端输入 yarn start 就可以开始应用程序啦。

  效果如下:

相关推荐

  1. Vue如何渲染使用Vue写法的HTML文件

    2024-03-14 14:28:03       12 阅读
  2. H5页面手绘轨迹路径-过程允许拖动+缩放地图

    2024-03-14 14:28:03       22 阅读
  3. 【React】React如何渲染空格

    2024-03-14 14:28:03       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 14:28:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 14:28:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 14:28:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 14:28:03       18 阅读

热门阅读

  1. git ssh建立连接

    2024-03-14 14:28:03       17 阅读
  2. 渗透测试修复笔记 - 02 Docker Remote API漏洞

    2024-03-14 14:28:03       22 阅读
  3. 介绍一下mysql的存储结构和存储逻辑

    2024-03-14 14:28:03       21 阅读
  4. docker和docker-compose安装

    2024-03-14 14:28:03       19 阅读
  5. MySQL 锁

    MySQL 锁

    2024-03-14 14:28:03      17 阅读
  6. 对象的组合复用学习笔记

    2024-03-14 14:28:03       16 阅读
  7. opencv install

    2024-03-14 14:28:03       21 阅读
  8. rt-thread之sal+lwip的tcp客户端示例记录

    2024-03-14 14:28:03       22 阅读
  9. Python之三数之和为0

    2024-03-14 14:28:03       19 阅读
  10. Vite:轻量级的前端构建工具

    2024-03-14 14:28:03       18 阅读
  11. 掌握堆:Python算法实践中的高效数据管理与优化

    2024-03-14 14:28:03       24 阅读
  12. 获取Stream流

    2024-03-14 14:28:03       23 阅读