Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 889|回复: 0

关于HTML实现拖放时出现禁止图标的解决方案

[复制链接]
  • TA的每日心情
    奋斗
    前天 22:25
  • 签到天数: 790 天

    [LV.10]以坛为家III

    2049

    主题

    2107

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    722766
    发表于 2021-4-27 13:05:37 | 显示全部楼层 |阅读模式

    HTML5拖放操作API

    如果网页元素的draggable元素为true,这个元素就是可以拖动的。

    <div draggable="true">Draggable Div</div>

    在大多数浏览器中,a元素和img元素默认就是可以拖放的,但是为了保险起见,最好还是加上draggable属性。

    拖动过程会触发很多事件,主要有下面这些:

    • dragstart:网页元素开始拖动时触发。
    • drag:被拖动的元素在拖动过程中持续触发。
    • dragenter:被拖动的元素进入目标元素时触发,应在目标元素监听该事件。
    • dragleave:被拖动的元素离开目标元素时触发,应在目标元素监听该事件。
    • dragover:被拖动元素停留在目标元素之中时持续触发,应在目标元素监听该事件。
    • drap:被拖动元素或从文件系统选中的文件,拖放落下时触发。
    • dragend:网页元素拖动结束时触发。
    • drop:处理被拖动元素(从原来的位置删除stopPropagation())

    调用示例:

    draggableElement.addEventListener('dragstart', function(e) {
        console.log('拖动开始!');
    });

    dataTransfer对象的属性:

    • dropEffect:拖放的操作类型,决定了浏览器如何显示鼠标形状,可能的值为copy、move、link和none。
    • effectAllowed:指定所允许的操作,可能的值为copy、move、link、copyLink、copyMove、linkMove、all、none和uninitialized(默认值,等同于all,即允许一切操作)。
    • files:包含一个FileList对象,表示拖放所涉及的文件,主要用于处理从文件系统拖入浏览器的文件。
    • types:储存在DataTransfer对象的数据的类型。

    dataTransfer对象的方法:

    • setData(format, data):在dataTransfer对象上储存数据。第一个参数format用来指定储存的数据类型,比如text、url、text/html等。
    • getData(format):从dataTransfer对象取出数据。
    • clearData(format):清除dataTransfer对象所储存的数据。如果指定了format参数,则只清除该格式的数据,否则清除所有数据。
    • setDragImage(imgElement, x, y):指定拖动过程中显示的图像。默认情况下,许多浏览器显示一个被拖动元素的半透明版本。参数imgElement必须是一个图像元素,而不是指向图像的路径,参数x和y表示图像相对于鼠标的位置。

    dataTransfer对象允许在其上存储数据,这使得在被拖动元素与目标元素之间传送信息成为可能。

    本次试用遇到的问题:

    在拖放的过程中遇到当一个div上有其他元素,例如P、label、img等,在拖动到P、label时会出现禁止拖动的图标

    分析及解决方案:

    拖动到的“目的地”并不接受拖动的元素-----这是因为当拖动元素经过document时,document对象默认阻止了拖动事件,而其他HTML组件也位于document对象内,因此它们也不能接受“放”。

    因此我们需要将目标元素加两个事件ondragenter ondragover事件内容为event.preventDefault()

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-9-12 00:48 , Processed in 1.126981 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表