欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于textarea的直觀換行的一些研究材料

 更新時(shí)間:2006年10月07日 00:00:00   作者:  
前兩天研究了一下textarea的直觀行的換行規(guī)律,挺復(fù)雜啊:

直觀行怎樣取不光要看cols大小,還要看網(wǎng)頁編碼方式。
cols="30"的textarea,實(shí)際上每行可以容納29個(gè)半角字符,多少個(gè)全角字符就不一定了,與網(wǎng)頁編碼方式有關(guān)。
在IE6.0實(shí)測(cè)的情況,直觀行的換行發(fā)生在紅字處(紅字折到下一行)。

dddddddddddd米ddddddddddddddddddddd //全角后面的連續(xù)半角內(nèi)容被當(dāng)成一個(gè)完整單詞處理,如果剩下的位置容不下單詞的長(zhǎng)度了,就要換行,此為特殊規(guī)律A

網(wǎng)頁按Unicode編碼(“運(yùn)行代碼”的彈出頁面即按此編碼,JS生成的頁面均按此編碼)時(shí)的一般規(guī)律是

(“占滿”是說后面無論再跟全角、半角字符,都得換行)

123456789012345678901234567890 //29半角占滿
一二三四五六七八九十一二三四五六七八九十 //17全角占滿
一二三四五六七八九十一二三四五六七0八九十
一二三四五六七八九十一二三四五六0七八九十 
0一二三四五六七八九十一二三四五六1七八九十 //16全角,1半角占滿
0一二三四五六七八九十一二三四五六七八九十
0一二三四五六七八九十一二三四五1六七八九十 //15全角,2半角后不可容全角
01一二三四五六七八九十一二三四五六七八九十
01一二三四五六七八九十一二三四五2六七八九十 //15全角,2半角后可再容1半角(多于1半角時(shí)按特殊規(guī)律A)
012一二三四五六七八九十一二三四五六七八九十 //15全角,3半角占滿
012一二三四五六七八九十一二三四五3六七八九十
0123一二三四五六七八九十一二三四五六七八九十 //14全角,4半角后不可容全角
0123一二三四五六七八九十一二三四4五六七八九十 //14全角,4半角后可再容1半角(多于1半角時(shí)按特殊規(guī)律A)
01234一二三四五六七八九十一二三四五六七八九十 //14全角,5半角占滿
01234一二三四五六七八九十一二三四5五六七八九十
012345一二三四五六七八九十一二三四五六七八九十 //13全角,6半角后不可容全角
012345一二三四五六七八九十一二三6四五六七八九十 //13全角,6半角后可容1半角(多于1半角時(shí)按特殊規(guī)律A)
0123456一二三四五六七八九十一二三四五六七八九十 //13全角,7半角占滿
0123456一二三四五六七八九十一二三7四五六七八九十
01234567一二三四五六七八九十一二三四五六七八九十 //12全角,8半角占滿
01234567一二三四五六七八九十一二8三四五六七八九十
012345678一二三四五六七八九十一二三四五六七八九十 //11全角,9半角后不可容全角
012345678一二三四五六七八九十一9二三四五六七八九十 //11全角,9半角后可再容1半角(多于1半角時(shí)按特殊規(guī)律A)
0123456789一二三四五六七八九十一二三四五六七八九十 //11全角,10半角占滿

……

0一二三四五六七八九十一二三四五12六七八九十 //15全角,1半角后可再容2半角連續(xù)字符(多于2半角時(shí)按特殊規(guī)律A),此條可由15全角,3半角占滿得出

……

0一二三四五六七八九十一二三四1234五六七八九十 //14全角,1半角后可再容4半角連續(xù)字符(多于4半角時(shí)按特殊規(guī)律A),此條可由14全角,5半角占滿得出

……

01一二三四五六七八九十一二三四234五六七八九十 //14全角,2半角后可再容3半角連續(xù)字符(多于3半角時(shí)按特殊規(guī)律A),此條可由14全角,5半角占滿得出

……
換行位置不僅與換行位置之前的整行文字有關(guān),還與紅字有關(guān)(往往全角文字是因?yàn)闊o法在上行末尾擠下才被折到下一行的)。

總結(jié)一下就有:


CODE:[Copy to clipboard]x全角,y半角占滿 = x全角,y-1半角后不可容全角 = x全角,y-n半角后可再容n半角連續(xù)字符(多于n半角時(shí)按特殊規(guī)律A)。
所以做實(shí)驗(yàn)搞清楚所有“占滿”的情形就可以了。

現(xiàn)將cols=30,網(wǎng)頁按Unicode編碼時(shí)的“占滿”情況列出:

17全角
16全角,1半角
15全角,3半角
14全角,5半角
13全角,7半角
12全角,8半角
11全角,10半角
10全角,12半角
9全角,13半角
8全角,15半角
7全角,17半角
6全角,19半角
5全角,21半角
4全角,22半角
3全角,24半角
2全角,26半角
1全角,28半角
29半角

利用瀕于發(fā)生按特殊規(guī)律A換行的情形,很容易測(cè)出所有“占滿”的情形:
例如,一二三四五六七八九十012345678912一二三四五六七八九十 //10全角,12半角占滿
一二三四五六七八九十0123456789123一二三四五六七八九十 //紅字處按特殊規(guī)律A換行,藍(lán)字處按9全角,13半角占滿換行

cols=30,網(wǎng)頁按GB2312編碼時(shí),“占滿”規(guī)律不同了:

14全角,1半角
13全角,3半角
12全角,5半角
11全角,7半角
10全角,9半角
9全角,11半角
8全角,13半角
7全角,15半角
6全角,17半角
5全角,19半角
4全角,21半角
3全角,23半角
2全角,25半角
1全角,27半角
29半角

這樣的話,要根據(jù)網(wǎng)頁的編碼方式和cols,通過實(shí)驗(yàn)具體才能測(cè)出“占滿”規(guī)律。

從textarea內(nèi)容的開頭起計(jì)算全角和半角字符的數(shù)目,根據(jù)“占滿”規(guī)律及特殊規(guī)律A決定第一個(gè)直觀換行的位置,再從第二行(包括物理行和直觀行)起計(jì)算全角和半角字符的數(shù)目,根據(jù)“占滿”規(guī)律及特殊規(guī)律A決定第二個(gè)直觀換行的位置……如是繼續(xù)下去,直到textarea內(nèi)容的末尾。這樣就可以得到所有的換行位置了。

當(dāng)然實(shí)際應(yīng)用時(shí)沒必要也沒可能這樣做實(shí)驗(yàn)啦,比如說選中textarea的第X行到第Y行,還沒了解官方的辦法是怎樣的,我是這么辦的:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]


04 年初寫的東西,應(yīng)該是目前研究比較全面的了吧??

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

根據(jù)被某網(wǎng)站匿名轉(zhuǎn)載的頁面( http://dl.pconline.com.cn/html_2/4/545/id=38457&pn=0.html )上的網(wǎng)友留言,上面的《JS實(shí)現(xiàn)文本域的任意行選定》示例代碼有一處bug:即在滾動(dòng)條不在頂端的情況下運(yùn)行示例代碼會(huì)出錯(cuò)?,F(xiàn)已修正:只增加了一行代碼


CODE:
src.scrollTop=0 //確保開始數(shù)行數(shù)時(shí)滾動(dòng)條位于頂部

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

相關(guān)文章

最新評(píng)論