当前位置:编程学习 > JS >>

js获取鼠标再定位鼠标位置

js获取鼠标再定位鼠标位置
//获取位置
 pt.getPos = function( obj , isNonStatic ) {
  var left = 0 , top = 0;
  while ( obj ) {
   left += obj.offsetLeft;
   top += obj.offsetTop;
   obj = obj.offsetParent;
   if ( isNonStatic && this.isNonStaticPos( obj ) ) {
    break;
   }
  }
  return { left: left , top: top };
 }

 //鼠标定位
 pt.fallowMouse = function( e , obj , dir ) {
  e = e || window.event;
  if ( !this.isNonStaticPos( obj ) || !e ) {//非静态定位left top定位是无效的,或者不是event对象
   return false;
  }
  dir = dir || { left: false , top: false };
  var ex = e.clientX;
  var ey = e.clientY;
  var bl = document.body.scrollLeft || document.documentElement.scrollLeft;
  var bt = document.body.scrollTop || document.documentElement.scrollTop;
  var bw = document.body.offsetWidth || document.documentElement.offsetWidth;
  //var bh = document.body.offsetHeight || document.documentElement.offsetHeight;
  var bh = document.documentElement.clientHeight;
  var ow = obj.offsetWidth;
  var oh = obj.offsetHeight;

  var ol = dir.left ? ( ex - ow < bl ? ex + bl : ex + bl - ow ) : ( ex + ow > bw ? ex + bl - ow : ex + bl );
  ol = Math.max( 0 , bl , ol );
  var ot = dir.top ? ( ey - oh < bt ? ey + bt : ey + bt - oh ) : ( ey + oh > bh ? ey + bt - oh : ey + bt );
  ot = Math.max( 0 , bt , ot );

  var pNode = this.nearestNonStaticPosPareNode( obj );
  if ( pNode ) {
   var pos = this.getPos( pNode );
   ol -= pos.left;
   ot -= pos.top;
  }
  obj.style.left = ol + 'px';
  obj.style.top = ot + 'px';
 }

 //屏幕中央定位
 pt.setCenter = function ( obj ) {
  var ocw = obj.offsetWidth;
  var och = obj.offsetHeight;
  var bsl = document.body.scrollLeft || document.documentElement.scrollLeft;
  var bst = document.body.scrollTop || document.documentElement.scrollTop;
  var bcw = document.documentElement.offsetWidth;
  var bch = document.documentElement.offsetHeight;
  var osl = bsl + Math.floor( ( bcw - ocw ) / 2 );
   osl = Math.max( bsl , osl );
  var ost = bst + Math.floor( ( bch - och ) / 2 );
   ost = Math.max( bst , ost );
  obj.style.left = osl + 'px';
  obj.style.top = ost + 'px';
 }

 pt.showAutoAdaptText = function ( node , text , pixelWidth , suffix ) {
  if ( node.nodeName ) {
   pixelWidth = pixelWidth || 14/95;
   var len1 = text.getLen();
   if ( typeof text == 'string' ) {
    var len2 = Math.floor( node.clientWidth * pixelWidth );
    var tstr = '';
    suffix = suffix || '...';
    var vstr = len1 > len2 ? text.subStringPro( len2 - suffix.length ) : text;
    if ( text != vstr ) {
     tstr = text;
     vstr += suffix;
    }
    node.title = tstr;
    node.value = vstr;
   }
  }
 }

 pt.getSubCodes = function( data , _code ) {
  if ( data.subCodesCache == undefined ) {
   data.subCodesCache = [];
   for ( var code in data ) {
    if ( /^[d]{2}(([d][1-9])|([1-9][d]))$/.test( code ) ) {
     var pareCode = code.substr( 0 , 2 ) + '00';
     if ( data.subCodesCache[pareCode] == undefined ) {
      data.subCodesCache[pareCode] = [];
     }
     data.subCodesCache[pareCode].push( code );
    }
   }
  }
  return data.subCodesCache[_code] || [];
 }

补充:网页制作,js教程 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,