Range,这是个很容易被人忽略的东西,在开发富文本编辑器时会经常用到。使用iframe设计模式或div的 contenteditable=“true” 。? ? ? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> ? <head> ? ? <title></title> ? ? <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ? </head> ? <body> ? ? ? <div id="div" contenteditable="true" style="width:300px;height:100px;border:1px solid #000"><br /></div> ? ? ? <input type="button" value="插入" onclick="test('测试一下')" onfocus="this.blur()" /> ? ? ? <script type="text/javascript"> ? ? ? ? ? function test(str){ ? ? ? ? ? ? ? if(!document.all){ ? ? ? ? ? ? ? ? ? alert("仅在IE中可以查看"); ? ? ? ? ? ? ? ? ? return; ? ? ? ? ? ? ? } ? ? ? ? ? ? ? document.getElementById('div').focus(); ? ? ? ? ? ? ? var selection= window.getSelection ? window.getSelection() : document.selection; ? ? ? ? ? ? ? var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0); ? ? ? ? ? ? ? range.pasteHTML(str); ? ? ? ? ? ? ? range.collapse(false); ? ? ? ? ? ? ? range.select(); ? ? ? ? ? } ? ? ? </script> ? </body> </html>? ?? ? ??提示:您可以先修改部分代码再运行
? <html> ? ? <head> ? ? ? ? <title></title> ? ? ? ? <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ? ? </head> ? ? <body> ? ? ? ? <div id="div" contenteditable="true" style="width:300px;height:100px;border:1px solid #000"><br /></div> ? ? ? ? <input type="button" value="插入" onclick="test('测试一下')" onfocus="this.blur()" /> ? ? ? ? <script type="text/javascript"> ? ? ? ? ? ? function test(str){ ? ? ? ? ? ? ? ? var selection= window.getSelection ? window.getSelection() : document.selection; ? ? ? ? ? ? ? ? var range= selection.createRange ? selection.createRange() : selection.getRangeAt(0); ? ? ? ? ? ? ? ? if (!window.getSelection){alert("请在支持w3c标准的浏览器查看")} ? ? ? ? ? ? ? ? else{ ? ? ? ? ? ? ? ? ? ? document.getElementById('div').focus(); ? ? ? ? ? ? ? ? ? ? range.collapse(false); ? ? ? ? ? ? ? ? ? ? var hasR = range.createContextualFragment(str); ? ? ? ? ? ? ? ? ? ? var hasR_lastChild = hasR.lastChild; ? ? ? ? ? ? ? ? ? ? while (hasR_lastChild && hasR_lastChild.nodeName.toLowerCase() == "br" && hasR_lastChild.previousSibling && hasR_lastChild.previousSibling.nodeName.toLowerCase() == "br") { ? ? ? ? ? ? ? ? ? ? ? ? var e = hasR_lastChild; ? ? ? ? ? ? ? ? ? ? ? ? hasR_lastChild = hasR_lastChild.previousSibling; ? ? ? ? ? ? ? ? ? ? ? ? hasR.removeChild(e) ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? range.insertNode(hasR); ? ? ? ? ? ? ? ? ? ? if (hasR_lastChild) { ? ? ? ? ? ? ? ? ? ? ? ? range.setEndAfter(hasR_lastChild); ? ? ? ? ? ? ? ? ? ? ? ? range.setStartAfter(hasR_lastChild) ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? selection.removeAllRanges(); ? ? ? ? ? ? ? ? ? ? selection.addRange(range) ? ? ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? </script> ? ? </body> </html> ? ? ? ?提示:您可以先修改部分代码再运行 |
详细解决方案
JavaScript Range用于开发类似于百度贴吧和webqq的编辑器
热度:364 发布时间:2013-03-01 18:33:02.0
相关解决方案
- javascript ie6兼容的有关问题
- javascript window open在ie中设立不起作用,求解决
- javascript 字符串拼接效率有关问题
- JavaScript 自动生成图片并合并有关问题
- 不走"<script type='text/javascript'>"标签咋回事
- <script type="javascript/text">的有关问题
- 用servlet+jsp+javascript+jdbc做个简单的办公自动化系统流程,该如何解决
- Parameter index out of range (五 > number of parameters, which is 4)
- 怎么打开 javascript:SetData(2010,5,10)
- javaScript = == ===区别,该怎么解决
- javascript 怎么验证name=xx.xx的radio表单
- form action 和 javascript 的提交問題解决方法
- javascript,该怎么处理
- javascript,该如何处理
- javascript 选中文字 但是保存样式 标签
- 新人求问,J2EE方向,html,css,javascript,vml要学到什么程度?解决思路
- javascript 请求servlet兑现将函数中定义的变量作为参数
- javascript 不懂,该如何处理
- javascript 不懂解决方法
- JavaScript 大局函数求实例,高分求
- javaScript 里面 如何知道Object 对象的长度
- javascript 函数调用有什么有关问题,请
- javascript 中文本框中数字如何比较
- javascript IE通过,火狐,google浏览器不过解决思路
- java.lang.StringIndexOutOfBoundsException: String index out of range: 12
- javascript rsa加密/java使用Cipher.getInstance("RSA/ECB/PKCS1Padding")解密,该如何处理
- IE javascript start()函数解决方案
- 关于RTMP 播放器(DELPHI C# FLASH JAVASCRIPT)解决思路
- Chrome Javascript Click 事件,该如何解决
- javascript 实出_blank跳转到新标签页有关问题