人人网主页在遨游浏览器内超级拖放功能失效

很少在人人网主页使用超级拖放功能进行搜索,今天同学发了一条状态,“6.73很欢乐”。 不知道6.73是什么意思,拖放搜了下,没出结果,我也没在意,直接又选中文字右键搜了下。 排名第一的居然是豆瓣的一个帖子 ,说是Dota出6.73版了

后来同学回复我的状态说超级拖放不能用了,才想着看看是哪的问题。遨游的这类附加功能应该也是监听事件来实现的, 去w3cshool查DOM和javascript中对的事件的支持,并没有拖放事件。不过遨游兼容模式是IE内核,极速模式是WEBKit内核, 去网上搜 "IE 拖放事件",查出来微软在IE里面增加了拖放事件的监听,搜weikit支持的事件,也有对拖放事件的支持。 这样问题就大概清楚了,估计是人人网的javascript脚本拦截或者覆盖了拖放事件,导致遨游浏览器收不到触发的拖放事件, 所以拖放后没有任何反应

用遨游自带的开发者工具看了看人人网js脚本里监听的事件,发现home.js中有代码监听了dragover事件,代码如下:

var _8f8=document.body;
_8f8.addEventListener("dragover",function(e){
e.preventDefault();
return false;
},false);

就是这段代码造成超级拖放失效,代码获取了document的body节点,然后附加拖放事件的监听,如果拖放事件发生了, 代码会调用后面的匿名函数进行处理,e.preventDefault()拦截了事件,通知浏览器不要执行与事件关联的默认动作, 所以当拖放操作发生后,遨游收不到拖放操作发生的通知。 通过实验验证,把人人网主页另存到本地,找到这段代码, 把e.preventDefault()删除,然后再打开就能进行正常的超级拖放。 综合附近的代码来看,监听器是为了实现拖放图片上传的功能



—  原创作品许可 — 署名-非商业性使用-禁止演绎 3.0 未本地化版本 — CC BY-NC-ND 3.0   —