婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > 文本修改留痕

文本修改留痕

熱門(mén)標(biāo)簽:江西防封卡外呼系統(tǒng)怎么安裝 400電話辦理安徽 電銷智能機(jī)器人靠譜么 南通電話外呼系統(tǒng)開(kāi)發(fā) 南寧外呼電銷系統(tǒng)招商 北京銷售外呼系統(tǒng)線路 石家莊電話機(jī)器人電話 沸思外呼線路 電銷機(jī)器人的宣傳語(yǔ)
在辦公自動(dòng)化,公文審核的時(shí)候,就需要用到 留痕操作了,就是把修改的東西直接在文本上顯示,而不直接改動(dòng)它。在以前,我沒(méi)有用VML去做,很勉強(qiáng)的用 TextRange 改變文本的顏色,然后增加一個(gè)層顯示更改信息。第一次修改還可以實(shí)現(xiàn),但不能做到再次修改,因?yàn)椋诙涡薷牡臅r(shí)候,那些原來(lái)創(chuàng)建的對(duì)象都消失了,而這些對(duì)象都是通過(guò) Select 操作得到的,用戶不選擇,腳本就沒(méi)有辦法創(chuàng)建那些對(duì)象。
    不久前,我想到了 VML ,開(kāi)始還覺(jué)得是不可能的事情,但我發(fā)現(xiàn)了 TextRange 對(duì)象一個(gè)很強(qiáng)大的方法 getClientRects(),這個(gè)方法可以返回 TextRange 對(duì)象包含的每一行的矩形信息。意思是說(shuō),如果你用鼠表選擇一段文本,文本會(huì)自動(dòng)高亮顯示,這樣看上去就是一塊塊矩形組成的不規(guī)則圖形。getClientRects 方法就可以得到這些矩形的坐標(biāo)和高寬,這樣一來(lái),就可以在選擇的文本外套一層 VML 畫(huà)的矩形,Oh my god...真是酷呆了。當(dāng)我第一次看到它的時(shí)候,興奮的抱著小白(貓)滿屋子亂跳。     接下來(lái),講講 TextRange 對(duì)象以及 getClientRects 和 VML 結(jié)合畫(huà)痕跡:
    TextRange 對(duì)象,顧名思義,文本區(qū)域,就是網(wǎng)頁(yè)上的一部分區(qū)域,可以是文本也可以是圖像和別的段落格式。所有能用鼠標(biāo)選擇的都可以變成 TextRange 對(duì)象。IE4 的時(shí)候就出現(xiàn)了。TextRange 有個(gè)強(qiáng)大的方法就是 execCommand(),它可以執(zhí)行很多命令,動(dòng)態(tài)更改網(wǎng)頁(yè)中內(nèi)容、樣式。創(chuàng)建 TextRange 對(duì)象一般有兩種途徑,一種是用戶選擇了一段文本,可以使用 var oTextRange=document.selection.createRange(); 還有種就是直接把document 創(chuàng)建成 TextRange :var oTextRange=document.createTextRane() 。不知道有沒(méi)有注意,兩個(gè)方式使用的函數(shù)不一樣,第一個(gè)因?yàn)楸臼【褪俏淖至耍惺褂?createRange(), 第二個(gè)不能確定是否都是文字,所有,必須用 createTextRange()。
    使用 getClientRects 返回的是一個(gè) TextRectangle 對(duì)象,它是一個(gè)集合,沒(méi)個(gè)子集擁有四個(gè)屬性 bottom,top,left,right ,就是兩個(gè)角的坐標(biāo),這個(gè)坐標(biāo)值是相對(duì)于頁(yè)面的,所以可以直接應(yīng)用到 VML 中來(lái)。
function createRect(num)
{
 var newMark=document.createElement("div id='mark"+num+"'>/div>");
 edit.insertBefore(newMark);
 var oRcts = oTempRange.getClientRects();//oTempRange是一個(gè) TextRange 對(duì)象
 for(var i=0;ioRcts.length;i++)
 {
  var t=oRcts[i].top;
  var l=oRcts[i].left;
  var r=oRcts[i].right;
  var b=oRcts[i].bottom;
  var newRect=document.createElement("v:roundRect oncontextmenu='popID="+num+";popUp();' id='Rect"+num+"no"+i+"' style='position:absolute;visibility:hidden' filled=f strokeColor=red strokeWeight=1.5pt>/v:roundRect>");
  newMark.insertBefore(newRect);
  newRect.style.posTop=t+document.body.scrollTop-3;
  newRect.style.posLeft=l-2;
  newRect.style.width=r-l;
  newRect.style.height=b-t;
  newRect.style.visibility="";
 }
}

    其他的代碼就不再說(shuō)了,我想說(shuō)說(shuō)整個(gè)腳本執(zhí)行的過(guò)程。首先用戶用鼠標(biāo)選擇一段文字,然后腳本馬上把選擇的文字創(chuàng)建成臨時(shí) TextRange 對(duì)象,并且通過(guò) execCommand 把這段文字的背景顏色改掉,以做對(duì)比。當(dāng)用戶點(diǎn)右鍵的時(shí)候,腳本檢查到用戶的事件源,如果臨時(shí) TextRange 對(duì)象存在,菜單上將顯示 “標(biāo)記選擇中的”這項(xiàng),如果事件源是已經(jīng)標(biāo)記過(guò)的文本,菜單上將顯示“取消標(biāo)記”這項(xiàng)。當(dāng)用戶意見(jiàn)選擇“標(biāo)記選中的”的時(shí)候,腳本彈出 對(duì)話框,提示用戶意見(jiàn)輸入對(duì)選擇的這段文字的處理。
    腳本得到用戶的選擇,就執(zhí)行上面的代碼,用 VML 把選擇的文字框起來(lái),然后生成一個(gè)層,上面記錄的是修改的內(nèi)容。當(dāng)用戶選擇的“取消標(biāo)記”,本身已經(jīng)標(biāo)記過(guò)的文字在點(diǎn)右鍵的事件上就有個(gè) popID=XX 的表達(dá)式,popID是個(gè)全局變量,通過(guò)這個(gè)popID 到 Document 中去尋找相應(yīng)的 VML 標(biāo)記和層,然后使他們的 outerHTML 為空,就起到了取消標(biāo)記的目的!
    可以訪問(wèn)下面的頁(yè)面,可以實(shí)現(xiàn)過(guò)程的。
    文本修改留痕


    到目前為止,關(guān)于VML的介紹已經(jīng)全部寫(xiě)完了。當(dāng)然我想這里面錯(cuò)誤還是有的,理解上也有很不足,表達(dá)上還有欠缺的地方。由于 VML 應(yīng)用的還不太普遍,但功能強(qiáng)大,我覺(jué)得有必要讓大家都了解一下VML技術(shù),至少讓大家知道,很多東西其實(shí)都可以用VML完成的。大家一起研究吧!

標(biāo)簽:北海 鹽城 云南 陽(yáng)泉 衢州 晉中 來(lái)賓 寧夏

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《文本修改留痕》,本文關(guān)鍵詞  文本,修改,留痕,文本,修改,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《文本修改留痕》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于文本修改留痕的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 陇南市| 文成县| 淅川县| 徐州市| 阿勒泰市| 开江县| 湖南省| 黑龙江省| 莒南县| 运城市| 庄浪县| 浦城县| 松江区| 博罗县| 澜沧| 米泉市| 永兴县| 从江县| 莆田市| 静乐县| 淮滨县| 昌平区| 虎林市| 微山县| 会同县| 万全县| 宁安市| 安远县| 铜川市| 古田县| 道孚县| 广宁县| 莱芜市| 峨眉山市| 昌江| 黔南| 抚顺市| 垦利县| 南漳县| 普兰店市| 永州市|