中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)頁制作 > [突破]在線編輯器任意設(shè)置字號
[js效果] 圖片加載進(jìn)度實(shí)時(shí)顯示 回到列表 [JS]點(diǎn)出統(tǒng)計(jì)器
 [突破]在線編輯器任意設(shè)置字號

作者:bound0 時(shí)間: 2006-07-31 文檔類型:原創(chuàng) 來自:藍(lán)色理想

第 1 頁 前言
第 2 頁 前人的誤區(qū)
第 3 頁 解決之道 [上]
第 4 頁 解決之道 [下]

一切關(guān)于“問題的解決之道”的方法論都不外乎是“變通”二字的某種講法。既然這個(gè)功能不適宜用Editor.document.selection.createRange()的pasteHTML()方法來實(shí)現(xiàn),我們就不用它好了。一個(gè)變通的想法是:通過改變Editor.document.body.innerHTML的全局來實(shí)現(xiàn)。

很顯然,至少在理論上,整體改變Editor.document.body.innerHTML可以實(shí)現(xiàn)任何我們想要的HTML編輯效果。

多好,隨著靈光一閃,戰(zhàn)略上的大問題在一秒鐘之內(nèi)就被我們搞定了!接下來讓我們看看具體的實(shí)現(xiàn)方法吧:

要想通過改變Editor.document.body.innerHTML來給選中的內(nèi)容設(shè)置字號大小,首先要解決的一個(gè)問題是在Editor.document.body.innerHTML中對選中內(nèi)容所對應(yīng)的代碼進(jìn)行定位。這算不上是個(gè)超級復(fù)雜的問題,但我知道對這個(gè)問題的解答也是很多人夢寐以求的。或許能有很多種解,下面給出我Bound0的辦法。

顯然這個(gè)問題不可以像一些人想象的那樣隨隨便便地用正則或者查找之類的方法就搞定,設(shè)想我在
Bound0000000000000000000000000000000000000000000000000000中隨便選中了一個(gè)0(表示為紅色),用正則隨便查到了一個(gè)0,很難確保就是我選中的那個(gè),同樣的道理,如果是在雷同的若干段HTML代碼中選中了一段,用查找所選字符的方法是不能確保正確定位的。

這個(gè)問題的合理的解應(yīng)該能把Editor.document.body.innerHTML分成三段:partA—選中內(nèi)容之前的內(nèi)容所對應(yīng)的代碼、partB—選中內(nèi)容所對應(yīng)的代碼(就是前面例子中紅色的部分)、partC—選中內(nèi)容之后的內(nèi)容所對應(yīng)的代碼。(在全選的時(shí)候,partA和partC都是空字符串;選中內(nèi)容為空的時(shí)候,從開頭到光標(biāo)位置的內(nèi)容所對應(yīng)的代碼是partA,partB為空字符串,光標(biāo)之后的內(nèi)容所對應(yīng)的代碼是partC

看看主要的代碼:

CODE:

function first()
{
//首先要取得編輯區(qū)的內(nèi)容

var oSel = Editor.document.selection.createRange();
var conts=''+oSel.htmlText //內(nèi)容選中部分對應(yīng)的代碼,首尾可能帶有多余標(biāo)簽(就是前面例子中的藍(lán)色標(biāo)簽)。
var textLength = Editor.document.body.innerText.length
oSel.moveStart("character", -1*textLength) //把選擇區(qū)的開始位置往前閃,再取一次內(nèi)容
var contp=''+oSel.htmlText //選中部分及選中部分前的內(nèi)容,末尾可能帶有多余標(biāo)簽。
var conta=''+Editor.document.body.innerHTML //整個(gè)內(nèi)容

var contpa=''
var partC=""
var partB=""
var partA=""

//接下來通過兩組循壞,用上面取得的三個(gè)內(nèi)容互相“磨”,把多余的標(biāo)簽“磨”掉。

var m=0
m=conta.indexOf(contp.substr(0,3)) //校正對齊contp和conta的開始位置,有時(shí)候conta開始處可能會有多余的<p>,造成兩者對不齊

for(var f=contp.length;f>0;f--)
{if(conta.substr(m,f)==contp.substr(0, f)){contpa=contp.substr(0,f);partC=conta.substr(m+f);break}}

var k=contpa.length
for(var u=conts.length;u>0;u--)
{if(conts.lastIndexOf(contpa.substr(k-u))!=-1){partB=contpa.substr(k-u);partA=contpa.substr(0,k-u);break}}

if(conts.length==0)partA=contpa

//顯示按要求分好的A、B、C三段內(nèi)容。

alert(partA)
alert(partB)
alert(partC)
}

實(shí)際使用的代碼比這個(gè)要復(fù)雜一些。因?yàn)橄胍獞?yīng)付各種特殊情況、考慮周全也不容易呢。

上面代碼所取到的conts和contp常常會包含瀏覽器自動添加的一些\r\n(回車、換行符),這會造成后面“磨”的困難,有必要先進(jìn)行格式化。但是由于對于pre、textarea、script、style和xmp這幾種標(biāo)簽的內(nèi)容來說\r\n可能是有意義的,所以不能簡單地用.replace(/[\r\n]/g,"")的辦法去除。必須既要去除瀏覽器自動添加的\r\n,又要保全pre、textarea、script和xmp這幾種標(biāo)簽的內(nèi)容。這種局面看起來確實(shí)復(fù)雜,不過好在瀏覽器不會在我們要保全的那幾種標(biāo)簽的內(nèi)容里自動添加\r\n,而這個(gè)時(shí)候原本是罪魁禍?zhǔn)椎膁ocument.selection.createRange().htmlText的標(biāo)簽自動封閉機(jī)制反倒為我們提供了方便:除非選中的內(nèi)容剛好處于一個(gè)標(biāo)簽的內(nèi)部,否則在conts中將出現(xiàn)完整成對的標(biāo)簽,這樣我們就可以比較容易地把位于pre、textarea、script、style和xmp這幾種標(biāo)簽中的內(nèi)容區(qū)分出來,只對其他內(nèi)容進(jìn)行去除\r\n的操作。而對于選中的內(nèi)容剛好處于一個(gè)標(biāo)簽的內(nèi)部的這種情況,它的具體情況可能又是五花八門的,我個(gè)人采取的辦法是把格式化和不格式化都嘗試一下,除非格式化的結(jié)果令partB長度較長(這說明瀏覽器自動添加的那些\r\n使“磨”出來的partB長度變短),否則就不格式化。

有時(shí)候?yàn)g覽器自動補(bǔ)全的標(biāo)簽并非添加在選中區(qū)域的最外圍。例如有時(shí)會把</p>結(jié)束標(biāo)簽添在</font>標(biāo)簽之前,而這里的</font>標(biāo)簽應(yīng)該是保留在partB中的,如果把</font>連同</p>一起“磨”掉就不對了。對此采取的辦法是檢查被“磨”掉的碎渣部分,把碎渣撿起來“磨”好,再裝到partB的末尾。

出處:藍(lán)色理想
責(zé)任編輯:moby

上一頁 前人的誤區(qū) 下一頁 解決之道 [下]

◎進(jìn)入論壇網(wǎng)頁制作網(wǎng)站綜合版塊參加討論

相關(guān)文章
變換思路,解決頁碼設(shè)置難題
作者文章
[奇招] JS暴虐查找法
關(guān)于textarea的直觀換行
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計(jì)大賽開啟
國際體驗(yàn)設(shè)計(jì)大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個(gè)可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:3/41個(gè)記錄/頁 轉(zhuǎn)到 頁 共4個(gè)記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報(bào)告錯(cuò)誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2