DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> javascript不可用的問題探究
javascript不可用的問題探究
編輯:關於JavaScript     

我第一次遇到這個問題還是在DHTML盛行的時代. 我們對浏覽器無所不用其極, 加上各種動畫菜單、3D標簽(我們現在已經學會不再使用這些了), 但總有人告訴我們javascript不可用.

誰禁用了javascript

第一個要問的問題是這些javascript不可用的環境在哪裡. 下面是一些可能的答案:

安全系統比如noscript或者公司代理過濾掉了javascript;
功能手機比如舊式黑莓(我還記得將舊式黑莓換到Opera Mini以獲得總算還過得去的上網體驗);
在移動應用環境中, 圖片和腳本有時候會被拆分處理;
在流量有限或者接入很慢的區域中;
人們因為個人原因禁用了javascript;
討厭廣告彈出等強勢廣告的人.
就像你所看到的那樣, javascript被禁用的原因多種多樣, 有被動的, 也有主動的. 所以不能說只有亂用網絡的人才會遭遇這樣的問題.

為什麼javascript會被禁用

像上面所列舉的那樣, javascript被禁用的原因多種多樣. 如果它是被有意禁用的, 那麼我猜主要原因無非以下三點, 即安全考慮、廣告疲勞以及慢速連接.

安全考慮在情理之中. 幾乎每一個在客戶端的攻擊都是使用的javascript(大多數情形下都是利用了插件的漏洞). Java當然是當前最大的安全漏洞, 但是通過javascript同樣會對存在漏洞的網站或者不經保護或者過時的浏覽器以及操作系統造成安全威脅.

慢速連接是個很有意思的原因. 非常諷刺的是, 我們使用javascript是為了加速客戶端體驗. 最初使用js的一個例子就是在客戶端對表單進行驗證從而避免服務器端不必要的工作周期.

如果你現在正處於一個很差的連接中(比如一個無線連接或者很差的3G連接), 你想要使用Google Reader或者Gmail, 你只能得到一個不完整的頁面, 這時候只有使用低版本的才能更好工作.

為了兩方都好

基於環境以及連接給用戶最好的體驗是非常好的. 這也是漸進增強(progressive enhancement)所研究的問題. 這也並非是很高深的東西, 它很簡單, 並且是處於完全的實用主義.

使用事件授權這樣的技術是非常簡單的. 你可以通過點擊父元素的handlers來寫你自己的HTML, 使用innerHTML或者其他一些更新更快的技術.

為什麼是這樣一個問題

坦白說, 我也不太清楚. 或許是因為我太過時了, 或許是因為我已經一次有一次對浏覽器和網絡連接失望了, 或許是因為我只想更安全一些. 我只是不明白為什麼人們只想要js的解決方案呢, 而實際上, js只是用來提供一些增強功能的.

費解的應用邊緣案例

人們時常懷有疑問的是"應用需要javascript". 如果我們足夠坦誠, 我們就會發現, 這樣的應用實際上是很少的. 如果一定要說出一些, 我只能想到的是浏覽器中的photoshop或者其他的一些編輯器(比如視頻、浏覽器中的IDE)才需要依賴於javascript. 其他都可以通過重新加載和服務器端的一些部件解決.

讓我們直面這樣一個事實——在Node.js的時代, 服務器端也可以用javascript來寫. Dav Glass of Yahoo兩年前顯示如果一個工具庫編寫成余環境獨立的, 那麼你就可以同時在客戶端和服務器端復用這些工具.

"應用需要javascript"的真正原因似乎是其他原因, 而非技術上的.

"應用需要javascript"的真正原因

正如禁用javascript可以有很多原因, 應用需要javascript也有很多原因.

你只知道js並且認為人們就應該升級他們的浏覽器. 這無可厚非, 但是這樣的看法是很狹隘的, 並且很容易失敗.
和你一起構建應用的團隊沒有服務器端的技能, 你希望能以較低的代價完成這個應用. 這或許有效, 但是這樣可能讓開發時間和資金都加倍. 要提前為這樣的開發做好規劃.
你想要盡快寫出應用, 並且你知道以後你會重寫這個應用的. 這是很常見的現象, 尤其是你可以因此而成功. 願上天保佑你吧, 千萬別讓人知道你會待很久.
你的應用會在一個純js的環境中運行. 這當然意味著你沒必要不使用js而完成你的應用. 一個很好的例子就是Air applications. 但你要保證這個環境在將來不出問題.
你的應用確實需要js來運行. 如果真是這樣的情況, 就別將它提供給沒有js的用戶. 向人們解釋為什麼以及如何做(盡量避免告訴人們他們需需要開啟js因為他們可能根本做不了而更加失望), 並利用js重定向到你的應用.

總結

總之, javascript依賴性的問題不只是技術原因. 它對舊的技術實踐提出了疑問, 並且對於可維護性有很大影響.

可以說, 如果我們能問問"我們為什麼需要js"而不是問"人們為什麼沒有js", 關於這個問題的討論會更有成效. 如果我們的技術能很好適應不同需求的話, 去責備人們跟不上網絡發展是毫無意義的.

通過展現給用戶看他們能通過開啟或者關閉浏覽器中部件來解決問題同樣是沒有意義的. 當一個普通用戶卡在你的應用中了, 這並不是一個告訴用戶發生了什麼的做法.

或許所有這些問題在node變得成熟以及普及以後都不會再是問題. 我將很樂意看到這點.

原文鏈接:That "javascript not available" case

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved