- 浏览: 313310 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (243)
- Core Java (13)
- Java (12)
- Android (2)
- Lucene (3)
- J2EE (3)
- Hibernate (2)
- Jsp & Servlet (3)
- Struts2 (3)
- Spring (5)
- JSF (6)
- RichFaces (2)
- HTML & JS & DOM & CSS (87)
- browser (1)
- Ajax & A4J (2)
- Workflow (1)
- Maven (3)
- Linux (2)
- VM & VBOX (1)
- Tomcat (1)
- Cache (3)
- Others (36)
- design (1)
- PHP (1)
- Try.js (1)
- HTML5 && CSS3 && ECMAScript5 (26)
- 疯言疯语 (5)
- mongodb (2)
- Hardware Common Sence (1)
- RESTful (3)
- Nginx (2)
- web安全 (8)
- Page Design (1)
- web performance (1)
- nodejs (4)
- python (1)
最新评论
-
New_Mao_Er:
求最新的版本破解啊!!!
Omondo eclipseUML插件破解 -
konglx:
讲得仔细,谢了
全面分析 Spring 的编程式事务管理及声明式事务管理 -
cilendeng:
对所有post有效只能使用过滤器
说说Tomcat的Server.xml的URIEncoding=‘UTF-8’配置 -
jiulingchen:
mark了,灰常感谢!
JAVA中最方便的Unicode转换方法 -
anlaetion:
这算法可以有
js 字符串搜索算法
忙了几天终于搞出来了这么一个功能,因为是针对特定情况(比如不考虑div)作做的开发,真正使用的话一些地方仍需要改进。做的时候是参考office word的功能来做的,为了用户能够更容易使用。贴上代码(初稿,有点乱,此版本是做了修改之后的版本,兼容ie和firefox):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>create text range</title> <script> var LineHeight = function(){ this.selectedE = document.selection?document.selection:(window.getSelection?window.getSelection():null); this.isIE = this.isIE(); } LineHeight.prototype.isIE = function(){ if (window.navigator.userAgent.indexOf("MSIE")>=1){//如果浏览器为IE return true; }else{ //如果浏览器为Firefox if (window.navigator.userAgent.indexOf("Firefox")>=1){ return false; } } } LineHeight.prototype.dowithParagragh = function(element){ if(element == null || element == 'undefined') return; if(element.nodeName.toLowerCase() == 'p'){ element.style.lineHeight = "200%"; } } LineHeight.prototype.dowithTable = function(element){ if(element == null || element == 'undefined') return; if(element.nodeName.toLowerCase() == 'table'){ var oTds = element.getElementsByTagName('td'); for(var j=0;j<oTds.length;j++){ oTds[j].style.lineHeight = "200%"; } } } LineHeight.prototype.dowithTableInTable = function(element){ if(element == null || element == 'undefined') return; if(element.nodeName.toLowerCase() == 'table'){ var oTds = element.getElementsByTagName('td'); for(var j=0;j<oTds.length;j++){ var oTd = oTds[j]; oTd.style.lineHeight = "200%"; if(oTd.hasChildNodes()){ for(var k=0;k<oTd.childNodes.length;k++){ var oChild = oTd.childNodes[k]; if(oChild.nodeType == 1 && oChild.nodeName.toLowerCase() == 'table'){ this.dowithTableInTable(oChild); } } } } } } LineHeight.prototype.dowithParagraghOrTable = function(element){ if(element == null || element == 'undefined') return; if(element.nodeName.toLowerCase() == 'p'){ element.style.lineHeight = "200%"; var oTables = element.getElementsByTagName('table'); if(oTables == null || oTables.length == 0) return; for(var i=0;i<oTables.length;i++){ this.dowithTableInTable(oTables[i]); } }else if(element.nodeName.toLowerCase() == 'table'){ this.dowithTableInTable(element); } } /*HTMLElement.prototype.contains=function(o){ while(o!=null){ if(o==this)return true; o=o.parentNode; } return false; }*/ LineHeight.prototype.contains = function(a, b){//扩展的contains return a.contains ? a != b && a.contains(b) : !!(a.compareDocumentPosition(b) & 16); } LineHeight.prototype.test = function(){ var range; var startPE; var endPE; var oDiv; var rng; if(this.isIE){ range = this.selectedE.createRange(); rng = range.duplicate(); oDiv = document.createElement('div'); oDiv.innerHTML = range.htmlText; range.collapse(); startPE = range.parentElement(); rng.collapse(false); endPE = rng.parentElement(); }else{ range = this.selectedE.getRangeAt(0); startPE = range.startContainer.parentNode; endPE = range.endContainer.parentNode; } if(startPE.nodeName.toLowerCase() == 'td' && endPE.nodeName.toLowerCase() == 'td'){ while(startPE.nodeName.toLowerCase() != 'table'){ startPE = startPE.parentNode; } while(endPE.nodeName.toLowerCase() != 'table'){ endPE = endPE.parentNode; } if(startPE == endPE || this.contains(startPE,endPE)){ this.dowithTableInTable(startPE); return; }else if(this.contains(endPE,startPE)){ this.dowithTableInTable(endPE); return; }else{ startPE = this.isIE?range.parentElement():range.startContainer.parentNode; endPE = this.isIE?rng.parentElement():range.endContainer.parentNode; } }else if(startPE.nodeName.toLowerCase() == 'td' ^ endPE.nodeName.toLowerCase() == 'td'){ while(startPE.nodeName.toLowerCase() != 'p'){ if(startPE.nodeName.toLowerCase() == 'body') break; startPE = startPE.parentNode; } while(endPE.nodeName.toLowerCase() != 'p'){ if(endPE.nodeName.toLowerCase() == 'body') break; endPE = endPE.parentNode; } //document.getElementsById('d');//debug if(startPE == endPE){ this.dowithParagraghOrTable(startPE); return; }else{ startPE = this.isIE?range.parentElement():range.startContainer.parentNode; endPE = this.isIE?rng.parentElement():range.endContainer.parentNode; } } //document.getElementsById('d');//debug while(startPE.nodeName.toLowerCase() != 'p'){ if(startPE.nodeName.toLowerCase() == 'body') break; this.dowithTable(startPE); startPE = startPE.parentNode; } //document.getElementsById('d');//debug while(endPE.nodeName.toLowerCase() != 'p'){ if(endPE.nodeName.toLowerCase() == 'body') break; this.dowithTable(endPE); endPE = endPE.parentNode; } if(startPE == endPE){ this.dowithParagraghOrTable(startPE); return; } this.dowithParagraghOrTable(startPE); this.dowithParagraghOrTable(endPE); if(this.isIE){ if(oDiv.hasChildNodes() && oDiv.childNodes.length >= 3){ var nextE = startPE.nextSibling; this.dowithParagraghOrTable(nextE); for(var i=2;i<oDiv.childNodes.length-1;i++){ nextE = nextE.nextSibling; this.dowithParagraghOrTable(nextE); } } }else{ var docFragment = range.cloneContents(); var count = 0; if(docFragment.hasChildNodes()){ for(var i=0;i<docFragment.childNodes.length;i++){ var oChild = docFragment.childNodes[i]; if(oChild.nodeType == 3 && oChild.nodeValue == '\n') continue; else count++; } } var nextE = startPE.nextSibling; this.dowithParagraghOrTable(nextE); for(var i=0;i<count-2;i++){ nextE = nextE.nextSibling; this.dowithParagraghOrTable(nextE); } } } function test1(){ var o = new LineHeight(); o.test(); } </script> </head> <body onmouseup='test1();'> <p> this is a function <span style="background-color:red">text of object of textrange</span>.you will find out how to use it.<br/> this is the <strong>second line for test the</strong> object of textrange.<br/> this is the third line for <strike>test the object</strike> of textrange. </p> <p> this is the <strong>second paragragh for</strong> test,<br/> this is the second line in paragragh two for test. </p> <p> this <strong>is the third paragragh for test,</strong><br/> this is the second line in paragragh three for test. </p> <p> this is a function <span style="background-color:red">text of object of textrange</span>.you will find out how to use it.<br/> this is the <strong>second line for test the</strong> object of textrange.<br/> <table border=1> <tr> <td>sdfasdfasdf</td> <td>sadfdsafsaf</td> <td>sdfasdf</td> <td>asdfasdfasf</td> </tr> <tr> <td>sadfsaf</td> <td>asdfasf</td> <td>asdfsadfsda</td> <td>asdfsadfsaf</td> </tr> </table> this is the third line for <strike>test the object</strike> of textrange. </p> <p> this is the <strong>second paragragh for</strong> test,<br/> this is the second line in paragragh two for test. </p> <table border=1> <tr> <td>sdfasdfasdf</td> <td>sadfdsafsaf</td> <td>sdfasdf</td> <td>asdfasdfasf</td> </tr> <tr> <td>sadfsaf</td> <td>asdfasf</td> <td>asdfsadfsda</td> <td>asdfsadfsaf</td> </tr> </table> <p> this <strong>is the third paragragh for test,</strong><br/> this is the second line in paragragh three for test. </p> <p> this is a function <span style="background-color:red">text of object of textrange</span>.you will find out how to use it.<br/> this is the <strong>second line for test the</strong> object of textrange.<br/> <table border=1> <tr> <td>sdfasdfasdf</td> <td>sadfdsafsaf</td> <td>sdfasdf</td> <td>asdfasdfasf</td> </tr> <tr> <td> <table border=1> <tr> <td>gggggggggggggggggggggggggggg<br/>gggggggggggggggggggggggggggg</td> <td>hhhhhhhhhhhhhhhhhhhhhhhhhhh<br/>hhhhhhhhhhhhhhhhhhhhhhhhhhh</td> </tr> <tr> <td>bbbbbbbbbbbbbbbbbbbbbbbbbbbb<br/>bbbbbbbbbbbbbbbbbbbbbbbbbbb</td> <td>mmmmmmmmmmmmmmmmmmmmmmmmmmmmm<br/>mmmmmmmmmmmmmmmmmmmmmmmmmm</td> </tr> </table> </td> <td>asdfasf</td> <td>asdfsadfsda</td> <td>asdfsadfsaf</td> </tr> </table> this is the third line for <strike>test the object</strike> of textrange. </p> <p> this <strong>is the third paragragh for test,</strong><br/> this is the second line in paragragh three for test. </p> </body> </html>
- textrange.rar (1.9 KB)
- 下载次数: 20
发表评论
-
循环数组的逻辑怎么写
2015-03-23 10:24 650应用场景这样的: var imgUrls = [ ... -
发布`代码生成器`
2014-11-17 00:45 589闲话不说,直接上地址 npm: https://www. ... -
MutationObserver
2014-10-27 15:29 1102MutationObserver MutationObse ... -
a simple mvvm library - bird
2014-10-09 18:26 733see here:https://github.com/i ... -
遍历dom tree是一件相当耗时的事情
2014-09-23 01:15 781遍历dom tree是一件相当耗时的事情,尤其是在遍历的同时 ... -
今天再讲下js里的继承
2014-09-18 00:27 700js的继承说简单也很简单,请看: function ... -
Text 类型
2014-09-05 18:52 850文本节点由Text类型表 ... -
JavaScript插入动态脚本
2014-09-05 18:47 647动态脚本指的是在页面加载时不存在,但将来的某一时刻通过修改该 ... -
innerHTML插入<style>元素
2014-09-05 18:37 1167通过innerHTML写入<style>元素没 ... -
CSS实现相对浏览器窗口定位彻底研究
2014-09-05 18:33 3732Web Developer / Designer 经常需要将 ... -
JavaScript插入动态样式
2014-09-05 18:07 613能够把CSS样式包含到HTML页面中的元素有两个。其中,& ... -
再理解jQuery;delete原型属性
2014-05-13 22:05 1869以前用jQuery的时候曾粗略看了它的源码,但却不求甚解。 ... -
javascript &&和||
2012-07-23 00:38 705一直以为 && 和 || ... -
undefined 和 void 0 的区别
2012-07-20 11:15 705在读backbone源码时看见这么一段代码: if ( ... -
Fiddler - 前端开发值得拥有
2012-07-16 14:41 838最近换了新工作,搬了新家,换了新室友,一切都在重新开始。 ... -
说说我的web前端之路,分享些前端的好书
2012-07-16 14:38 796WEB前端研发工程师,在国内算是一个朝阳职业,这个领域没 ... -
JavaScript实现 页面滚动图片加载
2012-07-16 14:29 693又到了这个月的博客时间了,原计划是打算在这个月做一个的功 ... -
JavaScript 操作 Cookie
2012-07-16 11:18 692从事web开发也有些日 ... -
Javascript定义类(class)的三种方法
2012-07-12 12:35 590程序员们做了很多探索,研究如何用Javascript模拟”类” ... -
服务端解决跨源共享
2012-06-21 10:18 4521跨源资源共享是web开发领域中一个非常有趣的话题,互联网 ...
相关推荐
总而言之,fckeditor是一款强大的在线编辑器,它的强大功能和高度定制性使其成为许多Web应用的理想选择。通过对原始版本的修改,如"MyFckeditor",你可以进一步满足特定项目的需求,提升用户体验。如果你正面临在线...
ueditor支持多种浏览器环境,如Chrome、Firefox、Safari、IE6+等,能够满足用户在网页端进行文字编辑、图片上传、多媒体插入等多种操作的需求。 **1. 基本功能** ueditor的基础功能包括文本格式化、字体调整、字号...
8. **安全性与兼容性**:这款编辑器被设计为跨平台,能在多种浏览器环境下正常运行,包括Chrome、Firefox、Safari和IE等。同时,它遵循W3C标准,确保了生成的HTML代码的规范性和与其他系统的良好兼容性。 在下载的...
8. **兼容性**:通常与各种浏览器(如Chrome、Firefox、Safari、IE等)兼容,确保不同平台的用户体验一致。 9. **API集成**:提供了JavaScript API,方便开发者将其集成到自己的应用中,控制编辑器的行为。 对于JSP...
11. **兼容性**:考虑到不同的浏览器和设备,HtmlEditor通常会优化对IE、Firefox、Chrome、Safari、Opera等主流浏览器的支持。 12. **用户体验**:OFFICE2007风格的界面设计,使得用户上手快速,操作直观。 在使用...
ueditor经过优化,对主流浏览器(如Chrome、Firefox、Safari、IE等)有良好的兼容性,保证了在不同设备和平台上的稳定运行。 10. **移动适配** 针对移动设备,ueditor有相应的移动端适配方案,可以在手机或平板上...
富文本编辑器是一种在线文本编辑工具,它允许用户在网页上进行类似Word的文本编辑操作,包括插入图片、格式化文字、添加链接等。百度富文本编辑器是百度公司开发的一款开源编辑器,广泛应用于博客、论坛、内容管理...
10. **兼容性**:该编辑器通常会兼容主流的Web浏览器,如Chrome、Firefox、Safari和IE,确保不同平台和设备上的用户体验。 然而,描述中提到这个编辑器是“抠出来”的,意味着它可能不包含完整的后台处理功能。因此...
10. **跨浏览器兼容**:CKEditor 3.3在主流浏览器(如IE、Firefox、Chrome、Safari和Opera)上表现良好,确保了广泛的用户覆盖。 在PHP和ASP环境中集成CKEditor,开发者需要将下载的zip文件解压,然后将CKEditor的...
6. **兼容性**:FCKeditor支持多种主流浏览器,包括IE6+、Firefox、Chrome、Safari和Opera,确保了广泛的应用场景。 7. **安全考虑**:FCKeditor提供了一些安全特性,如XSS过滤,以防止恶意代码通过编辑器注入到...
- 兼容主流浏览器,如Chrome、IE(包括64位)、Firefox,同时支持360极速浏览器、360安全浏览器、猎豹、百度、搜狗等国产浏览器。 3. **移动设备支持**: - 报表查询功能不限制于特定设备,支持所有带浏览器的...
9. **浏览器兼容性**:在主流浏览器(如Chrome、Firefox、Safari、IE9+)中表现良好,确保广泛的用户覆盖。 关于"fck"标签,这可能是指早期的FCKeditor,它是CKEditor的前身。FCKeditor在2003年首次发布,后来发展...