日本黄色片在线视频|国模无码一区二区三区|大香伊蕉国产短视频69|99精品日韩欧美在线观看|极品夜晚无码av一区二区|亚洲综合无码一区二区三区|国产亚洲精aa在线观看香蕉|日本2018一道国产高清视频

當(dāng)前位置:首頁(yè) > 長(zhǎng)沙網(wǎng)站建設(shè) > 文本編輯器的制作代碼 JS

文本編輯器的制作代碼 JS

文本編輯器的制作代碼:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>無(wú)標(biāo)題頁(yè)</title>
    <script language="javascript">
var edit;       //當(dāng)前選擇的文本編輯區(qū)域?qū)ο?BR>var RangeType;  //對(duì)象類(lèi)別
function start() //開(kāi)始初始化編輯器-編輯區(qū)域是Iframe
{
 Editor.document.designMode="ON";
 Editor.document.open();
 Editor.document.write(myTextArea.value);
 Editor.document.close();
    fnInit()
}
function setFocus() {
   Editor.focus();  //編輯器或去焦點(diǎn)
}
function selectRange(){
 edit = Editor.document.selection.createRange();  //編輯器的文本選擇區(qū)域
 RangeType = Editor.document.selection.type;
}
//包裝文本選定區(qū)域的執(zhí)行命令
function execCommand(command,para) { 
  setFocus();
        selectRange(); 
    if (para=="")   //沒(méi)有參數(shù)的情況
        edit.execCommand(command)
    else
    edit.execCommand(command, false, arguments[1]);
  Editor.focus();
  if (RangeType != "Control") edit.select();
}
//獲取或設(shè)置文本的格式-字體、字號(hào)
function doSelectC(str,el) {

   var Index = el.selectedIndex;
  if (Index != 0)
  { el.selectedIndex = 0;
  execCommand(str,el.options[Index].text);
    }
}
//獲取或設(shè)置當(dāng)前選定塊的格式化標(biāo)簽
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();
}
//獲取系統(tǒng)字體的方法
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將字體依次添加到復(fù)選列表中
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內(nèi)容
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!="")
{
//定位選中內(nèi)容
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}
//保護(hù)textarea、xmp、script和style的內(nèi)容不被改變
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>")}
}
//處理其他標(biāo)簽
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">標(biāo)題一
                    <option value="H2">標(biāo)題二
                    <option value="H3">標(biāo)題三
                    <option value="H4">標(biāo)題四
                    <option value="H5">標(biāo)題五
                    <option value="H6">標(biāo)題六
<option value="p">段落
<option value="dd">定義
<option value="dt">術(shù)語(yǔ)定義
<option value="dir">目錄列表
<option value="menu">菜單列表
<option value="PRE">已編排格式
                    </select>
<select style="height: 18"
                 onchange="doSelectC('FontName',this,'font face=&quot'+this.value+'&quot')"
                 name="selectFontName"></select></td>
<select style="width: 60; height: 18" onChange="fontsize(this)" name="selectFontSize" size="1">
                    <option selected>字號(hào)</option>
                    <option value="7">一號(hào)
<option value="6">二號(hào)
<option value="5">三號(hào)
<option value="4">四號(hào)
<option value="3">五號(hào)
<option value="2">六號(hào)
<option value="1">七號(hào)
<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 允許通過(guò)拖曳移動(dòng)絕對(duì)定位的對(duì)象</STRONG></P><TABLE cellSpacing=0 cellPadding=0
width="100%" border=0><TBODY><TR><TD><H2><FONT color=#ff0000>[2D定位只對(duì)樣式設(shè)置為Position:absolute的元素有效]</FONT></H2><P>命令document.execCommand("2D-Position",false,true)能打開(kāi)文檔的2D定位,當(dāng)容器的contentEditable標(biāo)記為true時(shí),
可以拖動(dòng)容器內(nèi)的控件、改變控件大小、編輯控件文本內(nèi)容。第3個(gè)參數(shù)設(shè)置為true時(shí)可以拖動(dòng)元素,否則不能。

</P></TD><TD><CENTER>
</html>

發(fā)表評(píng)論
◎歡迎參與討論,請(qǐng)?jiān)谶@里發(fā)表您的看法、交流您的觀點(diǎn)。

相關(guān)文章

2021年優(yōu)度成功簽約并完成泰坦凝膠官網(wǎng)

2021年優(yōu)度成功簽約并完成泰坦凝膠官網(wǎng)

此網(wǎng)站采用標(biāo)準(zhǔn)網(wǎng)站建設(shè)方案,PC+移動(dòng)自動(dòng)轉(zhuǎn)換模式,網(wǎng)站產(chǎn)品為一款火爆的微商產(chǎn)品,也是一款男性用品。...

備案與沒(méi)備案的新網(wǎng)站老域名為什么百度都不收錄?

備案與沒(méi)備案的新網(wǎng)站老域名為什么百度都不收錄?

現(xiàn)在互聯(lián)網(wǎng)越來(lái)越難做,百度的門(mén)檻越來(lái)越高,以前新網(wǎng)站上線提交后3天就會(huì)收錄,現(xiàn)在新網(wǎng)站上線每天提交還不一定會(huì)收錄,必須結(jié)合外鏈才有效。...

做好“著陸頁(yè)”,公司銷(xiāo)售業(yè)績(jī)將提升一大步

做好“著陸頁(yè)”,公司銷(xiāo)售業(yè)績(jī)將提升一大步

當(dāng)今,一個(gè)能在用戶尋找“返回”按鈕之前抓住用戶眼球的著陸頁(yè)比以往任何時(shí)候都更有商業(yè)價(jià)值。值得慶幸的是,一個(gè)好的著陸頁(yè)面的設(shè)計(jì)過(guò)程比以往更加容易把握,訣竅在于弄清楚實(shí)現(xiàn)這個(gè)非常重要的切入點(diǎn)所需的核心要素...

什么是關(guān)鍵詞?

什么是關(guān)鍵詞?

關(guān)鍵詞就是你向搜索引擎發(fā)出的一個(gè)指令,是讓搜索引擎幫助你查找相關(guān)信息的命令,它可以是一個(gè)字,也可以是一個(gè)詞、一句話、一個(gè)英字母、英文單詞、一個(gè)數(shù)字、一個(gè)符號(hào)等任何可以在搜索框中輸入的信息。...

什么樣的網(wǎng)站才是一個(gè)合格的SEO網(wǎng)站?

什么樣的網(wǎng)站才是一個(gè)合格的SEO網(wǎng)站?

在講網(wǎng)站之前還是來(lái)介紹一下什么是網(wǎng)站,因?yàn)檫@里的學(xué)員還有很多SEO初學(xué)者,網(wǎng)站就好比是我們?cè)谀硞€(gè)商場(chǎng)、某個(gè)小區(qū)開(kāi)的一個(gè)店鋪,你做生意肯定是有一個(gè)店鋪的對(duì)吧,那么網(wǎng)站就是一個(gè)互聯(lián)網(wǎng)上的店鋪,是一個(gè)虛擬的...