现在的位置: 首页 > 综合 > 正文

兼容Firefox和IE的拖动div块的实现

2013年10月18日 ⁄ 综合 ⁄ 共 5356字 ⁄ 字号 评论关闭

     这个功能主要是用了js的onmousedown、onmousemove、onmouseup、onmouseout几个事件。
并需要理解,FF和IE的offsetX、offsetY的差别。在FF下需要用layerX、layerY来代替offsetX、offsetY,
这两个事件属性是获得鼠标相对于父元素的相对位置。

注意:声明的DOCTYPE会影响document.documentElement.scrollTop和document.documentElement.scrollLeft的取值,
本人在网上找的解决方案如下:
关于js中 document.body.scrollTop 不能返回正确值的原因
本来是为了通过 document.body.scrollTop来获取浏览器垂直滚动条向下滚动的像素,但是不管滚动条在什么位置总是返回是0,
造成这样的原因和 html的头部声明有关,如果头部声明 为:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">,
这样肯定得到的结果是 0,如果该为<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 就能得到正确的结果,对于第一种头部声明想要得滚动条的滚动的高度怎么办,解决方法有两种
     1、var scrollPos; if (typeof window.pageYOffset != 'undefined') {   
       scrollPos = window.pageYOffset; } else if (typeof document.compatMode != 'undefined' &&  

         document.compatMode != 'BackCompat') {
          scrollPos = document.documentElement.scrollTop;
         } else if (typeof document.body != 'undefined')
         {  
           scrollPos = document.body.scrollTop;
        }

 2、用document.documentElement.scrollTop 替代 document.body.scrollTop


其中chrome游览器支持的是这种方式获得滚动的距离的

window.pageYOffset

 

那么把 

var scrollX = document.documentElement.scrollLeft;  

 ar scrollY = document.documentElement.scrollTop;  

改成下面这种,就支持这三种游览器了,呵呵!

 

 

抱歉!评论已关闭.