知识大全 js获得指定控件输入光标的坐标兼容IE等多种主流浏览器

Posted 坐标

篇首语:历史是一面镜子,它照亮现实,也照亮未来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 js获得指定控件输入光标的坐标兼容IE等多种主流浏览器相关的知识,希望对你有一定的参考价值。

js获得指定控件输入光标的坐标兼容IE等多种主流浏览器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

 代码如下: var kingwolfofsky = /** * 获取输入光标在页面中的坐标 * @param HTMLElement 输入框元素 * @return Object 返回left和top bottom */ getInputPositon: function (elem) if (document selection) //IE Support elem focus(); var Sel = document selection createRange(); return left: Sel boundingLeft top: Sel boundingTop bottom: Sel boundingTop + Sel boundingHeight ; else var that = this; var cloneDiv = $clone_div cloneLeft = $cloneLeft cloneFocus = $cloneFocus cloneRight = $cloneRight ; var none = <span > </span> ; var div = elem[cloneDiv] || document createElement( div ) focus = elem[cloneFocus] || document createElement( span ); var text = elem[cloneLeft] || document createElement( span ); var offset = that _offset(elem) index = this _getFocus(elem) focusOffset = left: top: ; if (!elem[cloneDiv]) elem[cloneDiv] = div elem[cloneFocus] = focus; elem[cloneLeft] = text; div appendChild(text); div appendChild(focus); document body appendChild(div); focus innerHTML = | ; focus style cssText = display:inline block;width: px;overflow:hidden;z index: ;word wrap:break word;word break:break all; ; div className = this _cloneStyle(elem); div style cssText = visibility:hidden;display:inline block;position:absolute;z index: ;word wrap:break word;word break:break all;overflow:hidden; ; ; div style left = this _offset(elem) left + "px"; div style top = this _offset(elem) top + "px"; var strTmp = elem value substring( index) replace(/</g < ) replace(/>/g > ) replace(/n/g <br/> ) replace(/s/g none); text innerHTML = strTmp; focus style display = inline block ; try focusOffset = this _offset(focus); catch (e) ; focus style display = none ; return left: focusOffset left top: focusOffset top bottom: focusOffset bottom ; // 克隆元素样式并返回类 _cloneStyle: function (elem cache) if (!cache && elem[ $cloneName ]) return elem[ $cloneName ]; var className name rstyle = /^(number|string)$/; var rname = /^(content|outline|outlineWidth)$/; //Opera: content; IE :outline && outlineWidth var cssText = [] sStyle = elem style; for (name in sStyle) if (!rname test(name)) val = this _getStyle(elem name); if (val !== && rstyle test(typeof val)) // Firefox name = name replace(/([A Z])/g " $ ") toLowerCase(); cssText push(name); cssText push( : ); cssText push(val); cssText push( ; ); ; ; ; cssText = cssText join( ); elem[ $cloneName ] = className = clone + (new Date) getTime(); this _addHeadStyle( + className + + cssText + ); return className; // 向页头插入样式 _addHeadStyle: function (content) var style = this _style[document]; if (!style) style = this _style[document] = document createElement( style ); document getElementsByTagName( head )[ ] appendChild(style); ; style styleSheet && (style styleSheet cssText += content) || style appendChild(document createTextNode(content)); _style: // 获取最终样式 _getStyle: getComputedStyle in window ? function (elem name) return getComputedStyle(elem null)[name]; : function (elem name) return elem currentStyle[name]; // 获取光标在文本框的位置 _getFocus: function (elem) var index = ; if (document selection) // IE Support elem focus(); var Sel = document selection createRange(); if (elem nodeName === TEXTAREA ) //textarea var Sel = Sel duplicate(); Sel moveToElementText(elem); var index = ; while (Sel inRange(Sel)) Sel moveStart( character ); index++; ; else if (elem nodeName === INPUT ) // input Sel moveStart( character elem value length); index = Sel text length; else if (elem selectionStart || elem selectionStart == ) // Firefox support index = elem selectionStart; return (index); // 获取元素在页面中位置 _offset: function (elem) var box = elem getBoundingClientRect() doc = elem ownerDocument body = doc body docElem = doc documentElement; var clientTop = docElem clientTop || body clientTop || clientLeft = docElem clientLeft || body clientLeft || ; var top = box top + (self pageYOffset || docElem scrollTop) clientTop left = box left + (self pageXOffset || docElem scrollLeft) clientLeft; return left: left top: top right: left + box width bottom: top + box height ; ; function getPosition(ctrl) var p = kingwolfofsky getInputPositon(ctrl); document getElementById( show ) style left = p left + "px"; document getElementById( show ) style top = p bottom + "px"; 复制代码 代码如下: var elem = document getElementById(控件ID); var p = kingwolfofsky getInputPositon(elem); p left;//获得指定位置坐标 p top;//同上 p bottom;//同上  cha138/Article/program/Java/JSP/201311/20118

相关参考

知识大全 JS的IE和Firefox兼容性汇编

JS的IE和Firefox兼容性汇编  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  以下以IE代

知识大全 用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例

用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内

知识大全 js操作iframe兼容各种主流浏览器示例代码

遇到了操作iframe的相关问题其实就是在操作iframe内部某个窗体时调用父窗体的一个函数下面与大家分享下操作iframe兼容各种浏览器的方法   在做项目时遇到了操作iframe的相关问

知识大全 google chrome浏览器为什么邮政网银登陆界面输入不了密码

googlechrome浏览器为什么邮政网银登陆界面输入不了密码?密码安全控件已经下载安装了啊!求帮忙。你好,朋友。大部分的网上银行都没有做兼容Chrome浏览器的页面,建议安装IE插件,在IE兼容模

知识大全 Js日期选择自动填充到输入框(界面漂亮兼容火狐)

Js日期选择自动填充到输入框(界面漂亮兼容火狐)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文

知识大全 单击复制文字兼容各浏览器的完美解决方案

  单击复制文字的js找了很久由于之前没有接触过完全不知道兼容ie及标准dom浏览器不仅仅要通过js而且需要flash的帮忙clipboardswf这个在网上都有下载ie允许访问剪贴板windowcl

知识大全 javascript跟随滚动效果插件代码

  JavascriptFollowPlugin  Js跟随滚动效果插件  支持定义多个跟随ID采用cssfixed属性不支持ie兼容其他主流浏览器  支持定义滚动到底部的最小高度不会覆蓋底部  页面

知识大全 jquery实现简单的拖拽效果实例兼容所有主流浏览器

  js代码:funjs复制代码代码如下:_MoveObj=null;//全部变量用来表示当前divz_index=;//z方向jQueryfnmyDrag=function()_IsMove=;//

知识大全 ie与火狐中常见的兼容问题

  documentformitem问题  ()现有问题  现有代码中存在许多documentformNameitem("itemName")这样的语句不能在Firefox(火狐)下运行  ()解决方

知识大全 jquery实现图片渐变切换兼容ie6/Chrome/Firefox

jquery实现图片渐变切换兼容ie6/Chrome/Firefox  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快