眾所周知,JavaScript不是什么時(shí)候都能用。老舊的瀏覽器,高安全的環(huán)境(比如銀行,或者用戶設(shè)置),文本瀏覽器(如lynx, w3m),屏幕閱讀器,手機(jī)瀏覽器等等,很多場景都限制了JS的發(fā)揮與使用。對于正常人,你可以覺得無所謂,反正現(xiàn)在換個(gè)或者升級瀏覽器也是輕而易舉的事情,但是,很多障礙人士,卻只有很少的選擇。Web 2.0并不意味不能用。
所以我們必須采取適度降級(graceful degradation)的策略。對于一些非必須由Ajax驅(qū)動(dòng)產(chǎn)生內(nèi)容的前端頁面(比如分頁,提示內(nèi)容的展示),我們就可以采取此策略。我們必須保證,在沒有JS的情況下,這些內(nèi)容可以使用傳統(tǒng)(Web 1.0?)的方式來交互產(chǎn)生。這是保證Web具備親和力的基礎(chǔ)。有此保證后,我們就可以采取逐步增強(qiáng)(progressive enhancement)的策略來加入Ajax,使用JS來控制前端的交互,達(dá)到用戶體驗(yàn)的目的。實(shí)際上,讀者的疑問可能就在這,如何能夠保證適度降級的基礎(chǔ)上能逐步增強(qiáng)?實(shí)踐證明,Unobtrusive Javascript(不冒昧的Javascript? 天,這該怎么翻譯?)的思想能夠幫助我們做到。何謂Unobtrusive?那就是說,在沒有JS的情況下,網(wǎng)頁內(nèi)容依然能夠訪問(accessible)。概念很抽象,那么我們舉個(gè)例子說明吧。假如網(wǎng)頁有幾塊內(nèi)容:
<a href="#a">Show a</a> <a href="#b">Show b</a> <a href="#c">Show c</a> <div id="a">a</div> <div id="b">b</div> <div id="c">c</div>
我們需要按照用戶的點(diǎn)擊展示每一塊內(nèi)容。通常的做法是,我們會給a標(biāo)簽加上占位符,然后寫上onclick=""之類的代碼,在某些div加上style="display: none;",讓其在默認(rèn)情況下不可見,然后再讓JS操縱其可見性。這是一種不好的,非Unobtrusive的做法。
Unobtrusive的做法是,我們需要讓a有意義,而不是只為JS而存在。a應(yīng)該依照實(shí)際情況指向一個(gè)實(shí)際連接,或者跳到本頁的一塊內(nèi)容。我們應(yīng)該講JS完全分離出來,不要在HTML混雜onclick之類的事件代碼。而且,我們也不應(yīng)該在默認(rèn)情況下隱藏內(nèi)容,應(yīng)該在頁面載入后交給JS來控制,這樣,用戶在沒有或禁止掉JS的時(shí)候,她/他還有機(jī)會能夠看到所需的內(nèi)容。這是一個(gè)最簡單的Unobtrusive例子。
所以,結(jié)論是,我們要建設(shè)具備親和力的Web 2.0的網(wǎng)站,graceful degradation, progressive enhancement, Unobtrusive是基礎(chǔ)。當(dāng)然,某些完全依靠Ajax的網(wǎng)站,比如Google Maps,得另外討論。我們可以看到,即使是Gmail,它也有一個(gè)非Ajax版本備用。當(dāng)然,我的意思不是每個(gè)網(wǎng)站都應(yīng)該開發(fā)、維護(hù)兩個(gè)以上的版本,我們應(yīng)該,在保證親和力的基礎(chǔ)上,才逐步Ajax化,而且Ajax應(yīng)該是用在構(gòu)建一種新的交互方式,用在用戶體驗(yàn)上。
出處:Realazy
責(zé)任編輯:moby
上一頁 Ajax,用該所用 [1] 下一頁
◎進(jìn)入論壇網(wǎng)站綜合、網(wǎng)頁制作版塊參加討論
|