javascript - 添加draggable 属性,无论怎么设置都无法触发dragstart后的事件(火狐) IE 和 谷歌都可以
PHP中文网
PHP中文网 2017-04-11 11:39:09
0
1
569

在火狐上无法触发dragstart之后的事件,事件做了addEventListener/attachEvent/on+'type'的兼容,事件源做了e.target和e.srcElement的兼容,我在ie 和 谷歌上是可以触发的,但是在火狐上只能触发到dragstart,之后的事件好像都触发不了。

1.之前怀疑是浏览器兼容的问题,做了以上兼容之后无效

事件
var addEvent = function(obj,type,fn){
                            if(obj.addEventListener)    obj.addEventListener(type,fn,false);
                            else if (obj.attachEvent)    obj.attachEvent('on'+type,fn);
                            else obj['on'+type] = fn;
                        }
事件源:
 e = e ? e : event;
 if (!e.target) e.target = e.srcElement;

调用:

addEvent(document,'dragstart',function(e){
                            e = e ? e : event;
                            if (!e.target) e.target = e.srcElement;

                            e.target.style.opacity=0.6;
                            srctd = $(e.target).html();
                            srcStyle = getEStyle(e.target,[
                                'backgroundColor','color'
                            ]);
                            console.log("dragstart"+srctd,srcStyle);
                        })
addEvent(document,'drag',function(e){
                            e = e ? e : event;
                            if (!e.target) e.target = e.srcElement;

                            pDefault(e);
                            console.log("drag"+$(e.target).html());
                        })
addEvent(document,'dragend',function(e){
                            e = e ? e : event;
                            if (!e.target) e.target = e.srcElement;

                            e.target.style.opacity=1;

                            console.log("dragend"+$(e.target).html());
                            if(flag){      //if target undraggable flag==false // if target draggable flag ==true
                                $(e.target).html(tartd).css(tarStyle);
                            }else{
                                console.log("end outside");
                            }
                            flag = true;    //reset flag
                        })

2.经过console.log测试,确实无法进入addEventListener('drag')等等的事件,明明在IE都能触发了。。。。
很奇怪

PHP中文网
PHP中文网

认证0级讲师

reply all(1)
PHPzhong
addEvent(document,'dragstart',function(e){
                            e = e ? e : event;
                            
                            e.dataTransfer.setData('text/plain', 'data'); //加上这句,data是传给dataTransfer的数据,具体看文档
                            
                            if (!e.target) e.target = e.srcElement;

                            e.target.style.opacity=0.6;
                            srctd = $(e.target).html();
                            srcStyle = getEStyle(e.target,[
                                'backgroundColor','color'
                            ]);
                            console.log("dragstart"+srctd,srcStyle);
                        })
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!