Html5中原生拖拽的操作方法

这篇文章主要介绍了Html5中原生拖拽的操作方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Html5中原生拖拽的操作方法文章都会有所收获,下面我们一起来看看吧。

在天水等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、网站设计 网站设计制作按需求定制设计,公司网站建设,企业网站建设,高端网站设计,营销型网站,成都外贸网站建设公司,天水网站建设费用合理。

1. 拖拽过程

1.1 拖动事件

当按住鼠标拖动draggable元素的时候会按照如下顺序依次触发

dragstart -> drag -> dragend

  1. dragstart :在按住鼠标开始拖动时候触发(触发一次)

  2. drag :在按住鼠标拖动的过程触发(持续触发)

  3. dragend :在释放鼠标后触发(无论是把元素放到了有效的放置目标,还是放置到了无效的放置目标上)

1.2 放置事件

当将draggable元素元素拖动到容器中将会按照如下顺序依次触发

dragenter -> dragover -> drop

dragenter:只要有元素被拖动到放置目标上,就会触发dragenter事件
dragover:dragenter紧随其后的就是dragover事件,而且在被拖动的元素还在放置目标的范围内移动时,就会持续触发该事件。
dragleave:元素被拖出了放置目标,会触发dragleave
drop:将拖动元素放置到目标元素上的时候会激发

1.3 完整事件流

从开始拖动元素到放置元素到目标区域,将会按照如下顺序依次触发

dragstart->drag->dragenter->dragover->dragleave->drop->dragend

2. 解决firefox对拖拽不支持的问题

如果我们直接给一个元素添加draggable属性,在chrome,opera中是可以直接进行拖拽(没有可以释放的操作(比如箭头变+号)),但是在firefox却没有反应


        优
        良
        中
        差
    
    

要解决这个问题必须为拖拽元素绑定dragstart事件处理函数,并且在该函数中调用event.dataTransfer.setData函数

3. 解决chrome,opera拖拽元素至容器中时没有显示可释放标识问题

可释放标识使用不同的操作系统可能不同,在mac chrome中出现的是一个圆形标识里面嵌入一个白色的'+'。

解决方案是为容器绑定dragover事件

 
        优
        良
        中
        差
    
    
            
                
                    节次/星期
                    周一
                    周二
                    周三
                    周四
                    周五
                
            
            
                
                    第一节
                    
                    
                    
                    
                    
                
                
            
    

4. 解决放置时firefox打开新选项卡问题

使用firefox的时候如果释放了被拖拽的元素,默认浏览器将会打开一个新的选项卡,如下

Html5中原生拖拽的操作方法

这是由于drop回调函数之后浏览器执行了默认行为,通常的解决方案在拖拽容器的drop钩子中添加阻止默认事件执行以及阻止冒泡的代码。

但是如果将draggable元素拖到其他地方,依然会导致打开新选项卡问题的出现,这时可以为所有容器添加如上代码。

Html5中原生拖拽的操作方法

5. 编写一个完整小例子

Html5中原生拖拽的操作方法

关于“Html5中原生拖拽的操作方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Html5中原生拖拽的操作方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。


分享名称:Html5中原生拖拽的操作方法
本文来源:http://cdiso.cn/article/pjhhgo.html

其他资讯