你想要做的是什麼叫progressive enhancement。
此圖片是從我發佈的鏈接:
概括地說,這是什麼說明的是,你的網站應該沒有CSS或JavaScript達到基本的最小功能。換句話說,如果你有一些網站,你應該看起來像這樣:
<!DOCTYPE html>
<html>
<head>
<title>Basic HTML</title>
</head>
<body>
<h1>Introduction to semantic HTML</h1>
<p>You use H tags for headings, search engines like that.
Paragraph tags for paragraphs</p>
<a href="http://example.com/">Hyperlinks make sense</a>
<div>
<p>Divs can be used to create seperate areas for content</p>
</div>
</body>
</html>
這是什麼樣的?
在現代的網絡瀏覽器:
在命令行的瀏覽器有很多人使用:
CSS和JavaScript應該加強這基本功能,不需要它。
當我轉到您的網站,並要求http://example.com/Foo
我應該看到
<!DOCTYPE html>
<html>
<head>
<title>Foo page</title>
<script>/*Whatever script that does your ajaxy stuff*/</script>
</head>
<body>
<h1>Foo page</h1>
<p>Foo content</p>
<a href="http://example.com/bar">Click here to goto bar.</a>
<div>
<p>Divs can be used to create seperate areas for content</p>
</div>
</body>
</html>
我不應該看到的是:
<!DOCTYPE html>
<html>
<head>
<title>Foo page</title>
<script>/*Whatever script that does your ajaxy stuff*/</script>
<script>/*Script to Load in the main content for the body*/</script>
</head>
<body>
<noscript>
<p>Sorry, for some reason I decided you need
javascript and a modern desktop browser to see
the basic line of text you wanted.</p>
</noscript>
</body>
</html>
因此,而不是讓你的網頁基礎上的URL加載內容在瀏覽器中的頁面,您應該從服務器端提供頁面,這樣當您請求/ foo時,您將獲得所有foo HTML。然後,當它加載時,通過使特定的導航鏈接加載主體內容來編寫將通過逐步增強頁面的JavaScript。這樣當JS被禁用時,它可以工作,並且當JS被啓用時,你的內容加載速度更快。
從可用性的角度來看最後一點。
如果你要做到這一點ajaxy東西,請請確保您要確保捕獲所有HTTP錯誤代碼和做正確的事一樣提醒使用者錯誤加載頁面,並顯示加載圖形。 Ajaxy網站嘗試和加載內容時,我有一個緩慢的網絡,並沒有告訴我有關加載內容或發生的錯誤,讓我掛出去幹,讓我一個非常生氣的用戶,只是離開你的網站,永遠不會回來。
我在想同一 – ArcDare 2012-02-15 14:10:48
頁面原本很慢,因爲我不得不等待一些遠程第三方系統的請求。我希望頁面加載時無需等待這些結果,然後在返回時添加結果。 – 2012-02-15 14:16:26
好的,我明白了。因此,該頁面正在等待可能需要一段時間的資源。數據從第三方系統改變的頻率如何?像每個頁面加載一樣,第三方系統是加載唯一信息還是數據相同?我建議,因爲你的一些用戶可能沒有啓用js,那麼明智的解決方案是在服務器端使用緩存。像memcache之類的東西可以產生很大的差異,如果新數據可能來自第三方來源,則可以經常刷新數據。 – user1207047 2012-02-15 14:23:22