首页 > 其他分享 >04_拖动文件渲染在页面中

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

时间:2023-09-22 11:22:47浏览次数:60  
标签:console log 04 拖动 let newDiv file readlist 页面

  新建一个文件夹,跟之前一样,在 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 就可以开始应用程序啦。

  效果如下:

 

标签:console,log,04,拖动,let,newDiv,file,readlist,页面
From: https://www.cnblogs.com/toutiegongzhu/p/17719470.html

相关文章

  • wpf viewmodel中控制页面焦点
    publicstaticclassFocusBehavior{privatestaticDictionary<UIElement,RoutedEventHandler>handlers=newDictionary<UIElement,RoutedEventHandler>();publicstaticbool?GetIsFocused(DependencyObjectobj){......
  • 041802114金晶的自我介绍~
    我的学号041802114;我是退役大学生士兵金晶,在部队是一名医疗救护员;我的爱好是运动还有看书;推荐紫荆园二楼的漳州鸭面;最近常听的歌我推荐一首lauv的《parisintherain》;想要说些什么呢,那就是“勇敢的人先享受世界”......
  • Ubuntu 23.10/24.04 LTS 放弃默认使用 snap 版 CUPS 打印堆栈
    导读Canonical的开发者、OpenPrinting的项目负责人TillKamppeter今年5月表示,计划在Ubuntu23.10(ManticMinotaur)上默认使用Snap版本的CUPS打印堆栈。不过经过数月的测试,官方放弃了这项决定。Ubuntu23.10(ManticMinotaur)和Ubuntu24.04LTS发行版默认还是......
  • 项目开发难点-项目中两个窗口的页面,其中一个选择数据后回显到另一个项目页面中
    方法一:sessionStorage  如果项目是在浏览器中,打开或跳转另一个页面(可以使用同一个控制台)的情况下,可以用sessionStroage来存储数据,然后另一个页面获取数据 方法二:postMessage 适用情况与方法一一致(两个页面可以使用同一个控制台)。第二个页面选择后发送数据给第一个页面: w......
  • c# winform 点击窗体任意位置可以拖动
    c#winform窗体,点击窗体标题头可以拖动,如果鼠标点击在里面的panel的时候就没有这个效果了,以下实现拖动的方法。转载自醉低调publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}[DllImport("use......
  • Docker上运行RabbitMQ,无法访问管理页面
    在CentOS7中的Docker安装并运行了RabbitMQ,但是在访问管理页面http://IP:15672/却提示拒绝访问这是因为在Docker上运行的RabbitMQ,默认情况下是没有启用管理插件和管理页面的使用命令dockerexec-it容器名/bin/bash进入RabbitMQ容器的命令行终端。容器名即CONTAINERID......
  • 洛谷P5104 红包发红包
    我们假设他是离散的设[0,w]这个区间有i个数那么第一个人期望获得的钱数\(E(1)=\frac{1}{i}\sum_{j=1}^{i}\frac{w}{i}j=\frac{w(1+i)}{2i}\)因为这个区间实际上有无数个数,故令i趋于无穷,有\(E(1)=\frac{w}{2}\)那么轮到第二个人的时候还剩下\(w-\frac{w}{2}=\frac{w}{2}\)这么......
  • COMException: 检索 COM 类工厂中 CLSID 为 {DB8CBF1C-D6D3-11D4-AA51-00A024EE30BD}
    没有注册类(异常来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG)) "没有注册类(异常来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG))"一般有两种情况,我最近做项目都遇到了》第一种:(生成平台的问题) 解决方法:在项目属性里设置“生成”=>“目标平台”为x86而不是默认的......
  • docker搭建青龙面板及页面空白解决方法
    最近也是想赚点小钱,搭建个青龙面包来挂脚本,但是在搭建过程中遇到过一些问题,所以记录下来。docker搭建青龙面板我这里是使用aliyun服务器进行搭建的,系统是centOS7.6版本。另外docker自行搜索安装即可。拉取青龙面板镜像远程登录服务器,输入命令拉取青龙镜像dockerpullwhyour......
  • Ubuntu Server 14.04 LTS 设置静态IP地址
    IP地址以及网关修改、修改文件/etc/network/interfacessudovim/etc/network/interfaces对应作如下修改:autoeth0ifaceeth0inetstatic##原来的内容为ifaceeth0inetdhcpaddress192.168.0.117gateway192.168.0.1#这个地址你要确认下网关是不是这个地址net......