日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > web前端 > jscript > 搜狗云輸入法JS文件剖析(一)

搜狗云輸入法JS文件剖析(一)

來源:程序員人生   發(fā)布時(shí)間:2014-05-17 22:17:42 閱讀次數(shù):2918次

先簡單介紹一下這款輸入法。(如果還沒有用過的,建議先用一下,因?yàn)樘拍钚粤耍皇俏規(guī)拙湓捘苷f清的)最大的優(yōu)點(diǎn)莫過于詞庫的存儲(chǔ)與運(yùn)算均放在服務(wù)端上,降低本機(jī)資源開銷(比如不需要更新本地詞庫),只要能上網(wǎng)就能使用這款輸入法(比如網(wǎng)吧)而其缺點(diǎn)也是很明顯的:過于依賴網(wǎng)速;每次僅能用于一個(gè)網(wǎng)頁(區(qū)分于多頁面瀏覽器);不支持個(gè)性化(cookie安全限制)即使如此,作為一款概念性的云輸入法,還是挺值得一試的,畢竟云在天上飄了那么久,這款產(chǎn)品也算是一個(gè)實(shí)實(shí)在在的雨滴了,^_^

好了,開始進(jìn)入主題吧。
本篇文章的主要內(nèi)容是:從前端開發(fā)的角度,剖析輸入法的JS文件,從而達(dá)到學(xué)習(xí)的目的。
(暫時(shí)這么理解吧,從我個(gè)人角度講,就是想看看別人怎么做的,不一定符合廣大觀眾的興趣)

首先來大概理解一下輸入法的執(zhí)行流程。
安裝:通過右鍵添加一個(gè)鏈接到收藏夾,而這個(gè)鏈接不是普通的http鏈接,而是一個(gè)JavaScript語句
執(zhí)行:點(diǎn)擊收藏夾,執(zhí)行JavaScript語句,對(duì)當(dāng)前頁面進(jìn)行輸入監(jiān)控
關(guān)閉:既然是通過JavaScript來啟動(dòng)界面的,那么關(guān)閉的原理也是一樣。
刪除:直接刪除收藏夾鏈接即可,

那么,接下來,先分析一下安裝:

<a onclick="leftclick(event);" href="javascript:void((function(){var n=navigator.userAgent.toLowerCase();ie=n.indexOf('msie')!=-1?1:0;if(document.documentMode)ie=0;charset='';if(ie)charset=document.charset;src=ie&&charset=='utf-8'?'http://web.pinyin.sogou.com/web_ime/init2_utf8.php': title="liehuo.net"
'http://web.pinyin.sogou.com/web_ime/init2.php';element=document.createElement('script');element.setAttribute('src',src);document.body.appendChild(element);})())" class="btn1">

首先是左鍵點(diǎn)擊時(shí)出發(fā)的leftclick是提醒用戶正確的安裝方法是右鍵,然后添加到收藏夾(這個(gè)用戶體驗(yàn)還是挺好的,畢竟用戶都習(xí)慣左鍵點(diǎn)擊了)
接著就是href屬性了,也就是添加到收藏夾的執(zhí)行代碼,這里唯一值得關(guān)注的是為什么執(zhí)行函數(shù)要用void函數(shù)包起來呢?
查看一下文檔,看看void的用處:
void 運(yùn)算符對(duì)表達(dá)式求值,并返回 undefined。在希望求表達(dá)式的值,但又不希望腳本的剩余部分看見這個(gè)結(jié)果時(shí),該運(yùn)算符最有用。

寫一個(gè)測試代碼:

<a href="javascript:(function(){alert('test1');return 'wslcn.cnblogs.com';})()">Test1</a>
<a href="javascript:void((function(){alert('test2');return 'wslcn.cnblogs.com';})())">Test2</a>

從全局來看,加入這個(gè)void來達(dá)到忽略返回值的目的是挺有意思的,畢竟不能保證代碼里面不產(chǎn)生返回值,要是你在看一個(gè)網(wǎng)頁,然后你啟動(dòng)輸入法,輸入法卻把你的頁面給跳轉(zhuǎn)了,這個(gè)用戶體驗(yàn)是很不好滴(比如說你在寫博,突然頁面跳轉(zhuǎn)了,當(dāng)你返回去的時(shí)候,發(fā)現(xiàn)你寫的東東全不見)。
從我個(gè)人角度來看,使用這小小的void函數(shù)也就意味著增加了代碼的容錯(cuò)能力,提高用戶體驗(yàn)。

接著還有一個(gè)可以學(xué)習(xí)的地方,就是一個(gè)匿名函數(shù)寫完了之后需要馬上執(zhí)行,格式是:(function(){..})()

下面來分析主要的啟動(dòng)代碼:

代碼:

1 function() {
2 var n = navigator.userAgent.toLowerCase();
3 ie = n.indexOf('msie') != -1 ? 1 : 0;
4 if (document.documentMode) ie = 0;
5 charset = '';
6 if (ie) charset = document.charset;
7 src = ie && charset == 'utf-8' ? 'http://web.pinyin.sogou.com/web_ime/init2_utf8.php': 'http://web.pinyin.sogou.com/web_ime/init2.php';
8 element = document.createElement('script');
9 element.setAttribute('src', src);
10 document.body.appendChild(element);
11 }

 

判斷的邏輯有點(diǎn)復(fù)雜,但如果把這兩個(gè)文件下載進(jìn)行分析便得知,這兩個(gè)文件內(nèi)容是一樣的,只是編碼不同而已(一個(gè)是UTF-8,一個(gè)是GBK)
主要作用是根據(jù)網(wǎng)頁編碼來選擇,避免亂碼,但是這里的代碼邏輯為何這么復(fù)雜呢(先判斷是否為IE,然后判斷IE8特有的document.documentMode屬性,最后判斷IE6+特有的document.charset)?
簡單地說,IE6/IE7&&utf-8編碼的采用utf-8編碼的文件,其它的采用GBK編碼文件,這樣不禁就會(huì)聯(lián)想到:在FF/chrome/IE8中,網(wǎng)頁采用utf-8編碼,下載腳本卻是GBK編碼,這樣是否會(huì)存在問題呢?

實(shí)際測試的時(shí)候,當(dāng)然沒有問題了,但是瀏覽器怎么判斷文件編碼的呢,這里我沒有查閱相關(guān)資料,但能猜到原理:

image

- 這個(gè)倒是需要相當(dāng)?shù)慕?jīng)驗(yàn)積累啊~~

最后,函數(shù)的最后三句是挺經(jīng)典的動(dòng)態(tài)載入腳本代碼,可以封裝成一個(gè)函數(shù)日后備用(缺點(diǎn)是不支持回調(diào)函數(shù))。

轉(zhuǎn)自:http://www.cnblogs.com/wslcn/

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产精品一区二区三区久久 | heyzo久久 | 国产成人综合一区二区三区 | 亚洲一区二区三区在线视频 | 日韩一区二区三区视频 | 成人香蕉视频在线观看 | 国产一区二区播放 | 国产视频1区 | 精品久久国产 | 日韩在线三区 | 性av在线 | 日韩免费小视频 | 欧美日韩免费在线观看 | 伊人伊人网 | 欧美 日韩 国产 成人 在线 | 国产黄色在线看 | 亚洲综合大片69999 | 黄免费网站 | 欧美怡红院视频一区二区三区 | 91在线网站 | 欧美白人做受xxxx视频 | 国产精品一区二区6 | 夜夜春精品视频高清69式 | 国产 日韩 欧美 一区 | 亚洲精品一二 | 久久久久久久久久久久久九 | 久久亚洲欧洲 | 爱情岛免费永久网站 | 国产福利第一导航 | 欧美二区三区 | 日本国产精品 | av成人一区二区 | 一区二区三区四区在线播放 | 欧美日韩一级二级三级 | 国产视频1区 | 国户精品久久久久久久久久久不卡 | 香蕉视频色版在线观看 | 麻豆成人在线观看 | 久久久精品视 | 最新免费av网站 | 国产一区二区三区精品在线观看 |