美文网首页
drag and drop

drag and drop

作者: 散樱乱舞 | 来源:发表于2019-11-08 19:45 被阅读0次
        document.addEventListener('drop', (e) => {
            e.preventDefault();
        }, false)
        document.addEventListener('dragover', (e) => {
            e.preventDefault();
        }, false)
        window.onload = () => {
            let odrag = document.querySelector('.box');
            //鼠标开始拖动<拖拽元素>时
            //在<拖拽元素>上触发此事件
            //监听器需要设置拖拽所需数据
            //从操作系统拖拽文件到浏览器时不触发此事件
            //dragstart

            //鼠标拖动<拖拽元素>进入<拖放目标>时
            //在<拖放目标>上触发
            //用于给拖放元素设置视觉反馈
            odrag.ondragenter = (e) => {
                e.preventDefault();
                e.target.setAttribute('data-drag', 'enter');
            }

            //鼠标拖动<拖拽元素>在<拖放目标>上移动时
            //在<拖放目标>上连续触发
            //监听器通过阻止浏览器默认行为设置元素为可拖放元素.
            odrag.ondragover = (e) => {
                e.preventDefault();
            }

            //鼠标拖动<拖拽元素>在<拖放目标>上移动时
            //在<拖拽元素>上连续触发
            //drag

            //鼠标拖动<拖拽元素>移出<拖放目标>时
            //在<拖放目标>上触发
            //此时监听器可以取消掉前面设置的视觉效果
            odrag.ondragleave = (e) => {
                e.preventDefault();
                e.target.setAttribute('data-drag', '');
            }

            //鼠标拖动<拖拽元素>在<拖放目标>上释放时
            //在<拖拽元素>上触发
            //将元素从浏览器拖放到操作系统时不会触发此事件
            //dragend

            //鼠标拖动<拖拽元素>在<拖放目标>上释放时
            //在<拖放目标>上触发
            //此时监听器需要收集数据并且执行所需操作
            //如果是从操作系统拖放文件到浏览器,需要取消浏览器默认行为
            odrag.ondrop = (e) => {
                e.preventDefault();
                let fileObj = e.dataTransfer.files[0];
                console.log(fileObj);
            }
        }

相关文章

网友评论

      本文标题:drag and drop

      本文链接:https://www.haomeiwen.com/subject/cdbwbctx.html