ie 与 ff js 兼容。
这些代码在ie下可以,但不能在ff下正常。还望指点
<html>
<head>
<style>
#left,#right{
width:300px;
float:left;
border:1px solid #000;
height:400px;
}
#bar{
float:left;
width:10px;
height:400px;
background:#000;
}
</style>
</head>
<body>
<div id="left">left DIV</div>
<div id="bar"></div>
<div id="right">right DIV</div>
</body>
<script language="javascript" type="text/javascript">
var l = document.getElementById("left");
var r = document.getElementById("right");
var bar = document.getElementById("bar");
var move=false;
var offsetL,offsetR,LlastWidth,RlastWidth;
var leftL = getLeft( l );
var rightL = getLeft( r ) + r.offsetWidth;
var ie = (navigator.appVersion.indexOf("MSIE")!=-1);//IE
var ff = (navigator.userAgent.indexOf("Firefox")!=-1);//Firefox
bar.onmouseover=function(){
this.style.cursor = "col-resize";
}
bar.onmouseout=function(){
this.style.cursor = "default";
}
bar.onmousedown=function(e){
move=true;
e= e || window.event;
if(ff)
{
var mousePos =mouseCoords(e);
//layerX鼠标位置。
offsetL = e.clientX - mousePos.x;
offsetR = this.offsetWidth - offsetL;
/*
if(document.documentElement.scrollTop > 0)
{
y = evt.layerY - document.documentElement.scrollTop;
}
if(document.documentElement.scrollLeft > 0)
{
x = evt.layerX - document.documentElement.scrollLeft;
}
*/
}
if(ie)
{
this.setCapture();
offsetL = e.offsetX;
offsetR = this.offsetWidth - offsetL;
}
}
bar.onmousemove=function(e){
if(move == false) return;
e= e || window.event;
var mX = e.x ? e.x : e.pageX;
var mousePos =mouseCoords(e);
left.style.width = mousePos.x - leftL - offsetL + "px";
right.style.width = rightL - mousePos.x - offsetR + "px";
}
bar.onmouseup = function(){
this.releaseCapture();
move = false;
}
function getLeft(e)
{
if(!e)e=window.event;
var l = e.offsetLeft;
while(e=e.offsetParent)l+=e.offsetLeft;
return l;
}
function mouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
</script>
</html>