歡迎您來到網頁代碼站!
設為首頁
加入收藏
留 言 板
精品美文
在線手冊
如果您關閉了瀏覽器的javascript,可能導致頁面部分功能無法顯示,請開啟javascript以便正常瀏覽本網頁。網頁代碼站(www.hbsxmp.com)謝謝您的支持!
代碼首頁
菜單導航
表格相關
表單及按鈕
層和布局
計算轉換
游戲娛樂
廣告代碼
圖片特效
瀏覽器相關
日期時間
背景特效
文本鏈接
熱搜:
div
css
推薦
js
菜單
廣告
flash
TAB
時間
焦點圖
布局
按鈕
您的當前位置:
網頁代碼站
>>
文本鏈接
>> 【薦】一個小型的JS文本編輯器雛形
【薦】一個小型的JS文本編輯器雛形
分類:
文本鏈接
時間:2010-01-17 點擊:
關鍵詞:
JS
|
css
|
網頁代碼
|
代碼
|
<html> <head> <title>【薦】一個小型的JS文本編輯器雛形 - www.hbsxmp.com</title> <script language="javascript"> var edit; //當前選擇的文本編輯區域對象 var RangeType; //對象類別 function start() //開始初始化編輯器-編輯區域是Iframe { Editor.document.designMode="ON"; Editor.document.open(); Editor.document.write(myTextArea.value); Editor.document.close(); fnInit() } function setFocus() { Editor.focus(); //編輯器或去焦點 } function selectRange(){ edit = Editor.document.selection.createRange(); //編輯器的文本選擇區域 RangeType = Editor.document.selection.type; } //包裝文本選定區域的執行命令 function execCommand(command,para) { setFocus(); selectRange(); if (para=="") //沒有參數的情況 edit.execCommand(command) else edit.execCommand(command, false, arguments[1]); Editor.focus(); if (RangeType != "Control") edit.select(); } //獲取或設置文本的格式-字體、字號 function doSelectC(str,el) { var Index = el.selectedIndex; if (Index != 0) { el.selectedIndex = 0; execCommand(str,el.options[Index].text); } } //獲取或設置當前選定塊的格式化標簽 function doSelectCl(str,el) { var Index = el.selectedIndex; if (Index != 0) { el.selectedIndex = 0; execCommand(str,"<"+el.options[Index].value+">"); } } //初始化 function fnInit(){ for (i=0; i<document.all.length; i++) document.all(i).unselectable = "off"; //指定不選中任何元素 getSystemFonts(); } //獲取系統字體的方法 function getSystemFonts() { var a=dlgHelper.fonts.count; var fArray = new Array(); var oOption = document.createElement("OPTION"); oOption.text = "字體"; oOption.value = "0"; selectFontName.add(oOption); //使用DOM方法createElement將字體依次添加到復選列表中 for (i = 1;i < dlgHelper.fonts.count;i++) { fArray[i] = dlgHelper.fonts(i); var oOption = document.createElement("OPTION"); oOption.text = fArray[i]; oOption.Value = i; selectFontName.add(oOption); } } //格式化,保全script、textarea、xmp、pre和style內容 function formatfor(va) { var t=va.replace(/\r/g,''); t = t.replace(/(<(script|textarea|xmp|pre|style).*?>)([^\r]*?)(<\/\2>)/img, function (){return arguments[1]+arguments[3].replace(/\n/g, "\r")+arguments[4]}) t = t.replace(/\n/g, ""); return t } function fontsize(el) //改變字體的方法 {var Index=el.selectedIndex var addpre="<font size="+el.options[Index].value+">" if(Index>7)addpre="<font style='font-size:"+el.options[Index].value+"pt'>" var oSel = Editor.document.selection.createRange() var sBookmark = oSel.getBookmark() var oSelhtml=oSel.htmlText if(oSelhtml!="") { //定位選中內容 var conts=oSelhtml var textLength = Editor.document.body.innerText.length oSel.moveStart("character", -1*textLength) var contp=formatfor(oSel.htmlText) var conta=formatfor(Editor.document.body.innerHTML) var contpa='' var partC="" var partB="" var partA="" var m=0 m=conta.indexOf(contp.substr(0,3)) var f=contp.length for(;f>0;f--) {if(conta.substr(m,f)==contp.substr(0, f)){contpa=contp.substr(0,f);partC=conta.substr(m+f);break}} var ko=contp.substr(f) var kol=ko.length var ty=conta.substr(m+f,kol) var hu="" for(var b=1;b<kol;b++)if(ko.substr(b)==ty.substr(0,kol-b)){hu=ko.substr(b);contpa+=hu;partC=partC.substr(kol-b);break} var k=contpa.length cont=conts.replace(/\n/g, "") var u=cont.length if(cont==contpa.substr(k-u)){partB=cont;partA=contpa.substr(0,k-u)}else{ for(u=cont.length;u>0;u--) {if(cont.lastIndexOf(contpa.substr(k-u))!=-1){partB0=contpa.substr(k-u);partA0=contpa.substr(0,k-u);break}} contt=formatfor(conts) if(hu!="")if(contt.substr(contt.length-kol)==ko)contt=contt.substr(0,contt.length-kol)+hu u=contt.length var youm=contpa.lastIndexOf(contt) if(youm!=-1){partB=contt;partA=contpa.substr(0,youm);partC=contpa.substr(youm+u)+partC}else{ for(;u>0;u--){if(contt.lastIndexOf(contpa.substr(k-u))!=-1){partB1=contpa.substr(k-u);partA1=contpa.substr(0,k-u);break}} if(partB1.length>partB0.length){partB=partB1;partA=partA1}else{partB=partB0;partA=partA0} } } if(partB.substr(partB.length-1)=="<"){partB=partB.substr(0,partB.length-1);partC="<"+partC} if(partB.substr(partB.length-2)=="</"){partB=partB.substr(0,partB.length-2);partC="</"+partC} //保護textarea、xmp、script和style的內容不被改變 var cook=[] partA=partA.replace(/(<(script|textarea|xmp|style).*?>)[\s\S]*?<\/\2>/ig, function (){co=cook.length cook[co]=arguments[0];return "<cook"+co+">"}) var ook="" partA=partA.replace(/(<(script|textarea|xmp|style).*?>)[\s\S]*?$/i, function (){co=cook.length ook=arguments[2] cook[co]=arguments[0];return "<cook"+co+">"}) if(ook!=""){fd="(^[\\s\\S]*?<\/"+ook+">)" jk=new RegExp(fd,["i"]) if(jk.test(partB)){jk.exec(partB) co=cook.length cook[co]=RegExp.$1 partB=partB.replace(jk,"<cook"+co+">")}} partB=partB.replace(/(<(script|textarea|xmp|style).*?>)[\s\S]*?<\/\2>/ig, function (){co=cook.length cook[co]=arguments[0];return "<cook"+co+">"}) ook="" partB=partB.replace(/(<(script|textarea|xmp|style).*?>)[\s\S]*?$/i, function (){co=cook.length ook=arguments[2] cook[co]=arguments[0];return "<cook"+co+">"}) if(ook!=""){fd="(^[\\s\\S]*?<\/"+ook+">)" jk=new RegExp(fd,["i"]) if(jk.test(partC)){jk.exec(partC) co=cook.length cook[co]=RegExp.$1 partC=partC.replace(jk,"<cook"+co+">")}} partC=partC.replace(/(<(script|textarea|xmp|style).*?>)[\s\S]*?<\/\2>/ig, function (){co=cook.length cook[co]=arguments[0];return "<cook"+co+">"}) //處理字體 var dol=[] var dos=[] var lon=[] fd="<FONT([^>]*?)>" jk=new RegExp(fd,["im"]) while(jk.test(partB)){ce=dol.length jk.exec(partB) dol[ce]=RegExp.$1 partB=partB.replace(jk,"<site"+ce+">") } ce=dol.length-1 for(;ce>-1;ce--) {kjc="<site"+ce+">" fd=kjc+'(.*?)<\/font>' jk=new RegExp(fd,["im"]) if(jk.test(partB)){dos[dos.length]=ce jk.exec(partB) ko3=kjc+RegExp.$1+"</site"+ce+">" partB=partB.replace(jk,ko3) }else{lon[lon.length]=ce} } partB=partB.replace(/<\/font>/img,"<lonf>") for(var c=dos.length-1;c>-1;c--) { uts=dol[dos[c]] if(""==(uts.replace(/size=[0-7+]+/i,"").replace(/style=("|')FONT-SIZE: [0-9.]+.*;*("|')/im,"").replace(/[\s\n\r]+/mg,""))){partB=partB.replace("<site"+dos[c]+">","") partB=partB.replace("</site"+dos[c]+">","")}else{partB=partB.replace("<site"+dos[c]+">","<font"+uts.replace(/ size=[0-7+]+/im,"").replace(/FONT-SIZE: [0-9.]+pt/im,"").replace(/ style=("|');*("|')/im,"")+">") partB=partB.replace("</site"+dos[c]+">","</font>")} } //處理其他標簽 var addend="" var mio=[] partB=partB.replace(/<([^<> ]*?) [^<>]*?style=[^<>]*?FONT-SIZE: [0-9.]+[^<>]*?>/img, function (){notv="|select|input|option|object|" if(notv.indexOf("|"+arguments[1].toLowerCase()+"|")==-1){ op=mio.length mio[op]=arguments[0] return "<opis"+op+">"}else{return arguments[0]}}) kba=["h1","h2","h3","h4","h5","h6","pre","button","listing","big","small","tt","code","kbd","samp","td","\/td","caption","\/caption","th","\/th","tr","\/tr","table","\/table","thead","\/thead","tbody","\/tbody","tfoot","\/tfoot"] for(b in kba){ fd="<("+kba[b]+")[^<>]*?>" jk=new RegExp(fd,["img"]) partB=partB.replace(jk, function (){op=mio.length mio[op]=arguments[0] return "<opis"+op+">"}) } //收尾工作 liming=[] partB=partB.replace(/<(opis|site|lonf)([0-9]*)>/g, function(){var op=liming.length if(arguments[1]=="opis"){liming[op]=mio[parseInt(arguments[2])]} if(arguments[1]=="site"){liming[op]="<font"+dol[parseInt(arguments[2])]+">"} if(arguments[1]=="lonf"){liming[op]="</font>"} return "<duan"+op+">" }) if(liming.length>0){ partB=partB.replace(/^(.+?)(<duan0>)/m,function(){if(""!=arguments[1]){return addpre+arguments[1]+"</font>"+arguments[2]} else{return arguments[0]}}) var op=liming.length-1 for(var kc=0;kc<op;kc++){ fd="(<duan"+kc+">)(.+?)(<duan"+(kc+1)+">)" jk=new RegExp(fd,["m"]) partB=partB.replace(jk, function(){if(""!=arguments[2]){return arguments[1]+addpre+arguments[2]+"</font>"+arguments[3]} else{return arguments[0]}})} fd="(<duan"+op+">)(.+?)$" jk=new RegExp(fd,["m"]) partB=partB.replace(jk,function(){if(""!=arguments[2]){return arguments[1]+addpre+arguments[2]+"</font>"} else{return arguments[0]}}) } else{partB=addpre+partB+"</font>" } partB=partB.replace(/<duan([0-9]+)>/g,function(){return liming[parseInt(arguments[1])]}) var endtemp=partA+partB+partC for(vof in cook)endtemp=endtemp.replace("<cook"+vof+">",cook[vof]) Editor.document.body.innerHTML=endtemp var vrvd=Editor.document.selection.createRange() vrvd.moveToBookmark(sBookmark) vrvd.select() } else{ Editor.document.selection.createRange().pasteHTML(addpre+"</font>") }Editor.focus() el.blur() el.selectedIndex=0} </script> </head> <body SCROLL="no" bgcolor=d0d0c8 onload="start()" leftmargin=5 topmargin=5> <OBJECT id=dlgHelper CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0px" height="0px"></OBJECT> <select id="select1" style="height: 18" onchange="doSelectCl('FormatBlock',this);this.returnValue=false;" name="select1" size="1"> <option selected value="">段落樣式</option> <option value="P">普通 <option value="H1">標題一 <option value="H2">標題二 <option value="H3">標題三 <option value="H4">標題四 <option value="H5">標題五 <option value="H6">標題六 <option value="p">段落 <option value="dd">定義 <option value="dt">術語定義 <option value="dir">目錄列表 <option value="menu">菜單列表 <option value="PRE">已編排格式 </select> <select style="height: 18" onchange="doSelectC('FontName',this,'font face="'+this.value+'"')" name="selectFontName"></select></td> <select style="width: 60; height: 18" onchange="fontsize(this)" name="selectFontSize" size="1"> <option selected>字號</option> <option value="7">一號 <option value="6">二號 <option value="5">三號 <option value="4">四號 <option value="3">五號 <option value="2">六號 <option value="1">七號 <option value=1>1 pt <option value=2>2 pt <option value=3>3 pt <option value=4>4 pt <option value=5>5 pt <option value=6>6 pt <option value=7>7 pt <OPTION value=8>8 pt <OPTION value=9>9 pt <OPTION value=10>10 pt <OPTION value=11>11 pt <OPTION value=12>12 pt <OPTION value=13>13 pt <OPTION value=14>14 pt <OPTION value=15>15 pt <OPTION value=16>16 pt <OPTION value=17>17 pt <OPTION value=18>18 pt <OPTION value=19>19 pt <OPTION value=20>20 pt <OPTION value=21>21 pt <OPTION value=22>22 pt <OPTION value=23>23 pt <OPTION value=25>25 pt <OPTION value=28>28 pt <OPTION value=30>30 pt <OPTION value=35>35 pt <OPTION value=40>40 pt <OPTION value=45>45 pt <OPTION value=50>50 pt <OPTION value=60>60 pt <OPTION value=70>70 pt <OPTION value=85>85 pt <OPTION value=100>100 pt <OPTION value=120>120 pt <OPTION value=150>150 pt <option value=200>200 pt <option value=250>250 pt <option value=300>300 pt <option value=500>500 pt <option value=900>900 pt <option value=2000>2000 pt</select> <P> <IFRAME id="Editor" Name="Editor" style="WIDTH: 100%; HEIGHT: 95%"></IFRAME> <textarea name=myTextArea style="display:none"><P><FONT style="FONT-SIZE: 15pt"> <STRONG>2D-Position 允許通過拖曳移動絕對定位的對象</STRONG></P><TABLE cellSpacing=0 cellPadding=0 width="100%" border=0><TBODY><TR><TD><H2><FONT color=#ff0000>[2D定位只對樣式設置為Position:absolute的元素有效]</FONT></H2><P>命令document.execCommand("2D-Position",false,true)能打開文檔的2D定位,當容器的contentEditable標記為true時,可以拖動容器內的控件、改變控件大小、編輯控件文本內容。第3個參數設置為true時可以拖動元素,否則不能。 </P></TD><TD><CENTER> <br /> <a href="http://www.hbsxmp.com">網頁代碼站</a> - 最專業的代碼下載網站 - 致力為中國站長提供有質量的代碼! </body> </html>
運行代碼
全選代碼
復制代碼
保存代碼
友情提示
【薦】一個小型的JS文本編輯器雛形。
一、如果您使用的瀏覽器版本為IE6.0、360瀏覽器V3.0.8.1版本或者IE的更低版本瀏覽本頁面,建議您升級瀏覽器至IE7以上,上面的“運行”按鈕可能不能用,但您可按以下方式查看。
運行代碼方式:
1、點擊“復制”按鈕;
2、在桌面建立一個txt文檔;
3、粘貼復制的代碼;
4、最后把txt的擴展名改為“htm”或“html”;
5、完成,打開即可看到效果。
二、如果您使用FireFox或者非IE瀏覽器,建議您使用IE7以上版本。上面的“復制”按鈕失效,請您“全選”,以普通方式復制!
三、某些代碼因需加載完Jquery等之類比較大的JS文件,如果您看不到效果,請您刷新頁面!
四、某些代碼不能完全兼容各瀏覽器,還請您再次修改才能使用!給您帶來的不便!盡請諒解!謝謝您的支持!
上一篇:
點擊按鈕彈出全屏窗口的JavaScript 代碼
下一篇:
【酷】點光源技術
使用marquee實現文字上下滾動
JS實現的滾動最新公告/新聞的代
JavaScript控制Li文字列表無縫向上
JS垂直滾動文字
JS不間斷向上滾動
JavaScript文字閃爍代碼
經典文字滾動,單行向上滾動
【薦】一個小型的JS文本編輯器
仿Windows氣泡的鏈接提示
jQuery 漸隱漸出的鏈接文字提示
問問
|
貼吧
|
查詢
|
給我留言
|
精品美文
|
友情鏈接
| |
本站承接網站開發業務
版權聲明
|
廣告服務
|
聯系我們
|
網站地圖
|
關于我們
| |
滇ICP備08101440號
Powered by
網頁代碼站
(網頁即"web" + 代碼即"dm" + "cn" = webdm.cn) | 最專業的代碼下載網站 - 致力為中國站長提供高質量的代碼!
滇公網安備 53032202100002號
精品久久久久久久中文字幕