2010-06-04 50 views
3

假設我正在開發一個嚴重依賴於JavaScript的Web應用程序,並且所有POST命令都使用AJAX來存儲數據等。如何處理可能關閉JavaScript的瀏覽器?

應該如何處理那些用戶可能關閉JavaScript的情況?要求用戶的瀏覽器啓用它是不合理的嗎?這些情況是否有最佳做法?

+2

看到這個:http://stackoverflow.com/questions/822872/do-web-sites-really-need-to-cater-for-browsers-that-dont-have-javascript-enabled – goric 2010-06-04 02:24:48

回答

6

使用<noscript>標籤讓用戶知道他們不能使用沒有Javascript的網站。這不是最好的做法,但是在這一點上很常見,沒有它的大多數用戶都會在雨中被拋棄。這就是說,如果你可以提供一個不需要Javascript的網站版本(想想gmail的降級版本),那顯然是一個優秀的解決方案。沒有它,你將失去移動衝浪者,盲人和其他無障礙需求的人。那些太固執的人使用JS,但我們不關心他們。

+0

+1:noscript標籤是必須的。但如果可能的話,如果沒有腳本,儘可能給他們一個有用的品味。 – Pat 2010-06-04 02:29:03

+0

注意:自回答以來,移動用戶現在擁有完全有用的瀏覽器,並且Magento擁有移動版本。 – 2012-08-25 11:34:01

4

我個人認爲這不是一個期望人們開啓Javascript的需求。

如果你不想支持非JavaScript,它是非常簡單:

<noscript> 
    This site works better with Javascript turned on. 
</noscript> 

接近頂部。

如果你仍然想支持沒有Javascript的用戶,你可以構造你的Javascript,這樣如果JS沒有加載,所有的表單仍然提交到正確的位置。

舉例來說,如果你有一個表格:

<form action="" method="POST"> 
    <input type="text" name="name"> 
    <input type="submit"> 
</form> 

不要與您正在使用Javascript的想法構建實際的形式。相反,只需掛鉤頁面以增強體驗。

通常情況下,上述表單會提交給自己。使用Javascript,您可以掛鉤並通過AJAX而不是新的頁面加載進行提交。

+0

我正在考慮處理雙重提交(如果沒有JS,Ajax,如果有的話)。我很高興看到這不僅僅是一個雜湊。也許我會首先使用noscript標籤來製作ajax,然後再添加一個無JS版本。 – Cuga 2010-06-04 02:59:32

+1

你會有更多的成功,儘管最初的開發將花費更長的時間,如果你在沒有JS的情況下研究如何做到這一點。如果沒有,你可能不得不在整個地方進行破解,才能在沒有AJAX的情況下運行。 – 2010-06-04 03:07:46

+0

我可以看到。幸運的是,我們使用了3周衝刺的Scrum流程,所以現在繼續使用Ajax並沒有太大的好處,然後在下一個衝刺階段做出轉換我們5種形式的任務。 – Cuga 2010-06-04 13:47:41

2

這裏的關鍵是「優雅退化」的概念。儘管沒有javascript支持,但您想盡可能提供儘可能好的體驗。對於AJAX來說,這通常意味着製作全頁面請求,而不是我們習慣的可愛動態頁面; POST同樣需要通過HTML提交併加載一個新頁面。

這顯然不是功能豐富,並且很好地展示它可能是一個挑戰,但如果您正在尋找最佳實踐,那就是目標。同樣值得通過noscript標籤告訴用戶他們已禁用JavaScript(某些人可能已經合法地這樣做了),但是由於缺少javascript而關閉整個網站並不是友好的行爲。

任何有價值的網站都值得訪問。

+0

爲了讓您的網站上的每個AJAX表單也能夠按照慣例提交,需要大量工作。我確信,這些理論上的非JS用戶大多是虛構的,並且不太真實。只有最古老的手機不支持JS。該切斷電源了。 – 2010-06-04 04:15:04

+0

有數百萬個虛擬網站只能在一兩個最新的瀏覽器上正常運行 - 作者自己可能會佔據大部分頁面瀏覽量,因此腳本只適用於他們。 互聯網上有值得瀏覽內容的站點爲其用戶的使用和便利添加了腳本增強功能,而不是簡化腳本粘貼。 – kennebec 2010-06-04 04:42:26

+0

@beamrider這當然並不總是符合時間表,但我認爲這仍然是要爭取的。可訪問性是現代Web開發的重要組成部分,忽視它只是因爲它不方便,對於只支持數量有限的JS的屏幕閱讀器等設備不公平。 – 2010-06-04 04:51:54

1

取決於網站;例如,像Google Maps這樣的東西,顯然只有在沒有Javascript的情況下才能運行。因此,簡單地顯示一個無腳本元素禮貌地提及他們將需要它來查看該網站是好的。

可能最好避免任何光顧「你需要得到一個新的瀏覽器」的消息;他們可能無法出於多種原因,或者可能只是選擇安裝NoScript或類似軟件。據Mozilla稱,NoScript已近70 million downloads;顯然這些人中的很大一部分將會爲同一人重複下載,但是安裝它的人可能容易達到1000萬人 - 這並不重要。

我猜,如果可能的話,「最佳做法」應該是有一個優雅的降級版本。由你決定是否值得這個努力,或者它是否適合你的網站。

0

您可以通過action屬性發送表單數據。當JavaScript打開時,使用removeAttributesetAttribute刪除該屬性。這樣,當非JS用戶使用瀏覽器時,他們仍然可以提交表單。但是,在後端代碼中,您還必須支持非JS,這比使用<noscript>no-js(Mordenizr)更好。 當然,這樣做還是有一些缺點的,比如你每次都需要重新加載整個頁面,這會消耗很多時間和記憶。
到目前爲止,這是我們能做的最好的解決方案。希望你喜歡它。