如果創建的URL不是「真正的」URL,那麼使用History API有什麼意義?當然,我可以儘可能多地推送狀態,但如果我不能,那麼將這些URL之一包含在某個書籤中,這有什麼意義?我真正的問題是 - 你如何設置一個Web服務器,以便不管輸入的地址如何,它只加載一個Web應用程序(保留地址以便我可以使用JavaScript引用它來加載相關內容)?HTML5歷史API和書籤
因此,我可以使用歷史記錄API來顯示適當的地址,然後讓用戶在稍後返回到網站時實際工作。
如果創建的URL不是「真正的」URL,那麼使用History API有什麼意義?當然,我可以儘可能多地推送狀態,但如果我不能,那麼將這些URL之一包含在某個書籤中,這有什麼意義?我真正的問題是 - 你如何設置一個Web服務器,以便不管輸入的地址如何,它只加載一個Web應用程序(保留地址以便我可以使用JavaScript引用它來加載相關內容)?HTML5歷史API和書籤
因此,我可以使用歷史記錄API來顯示適當的地址,然後讓用戶在稍後返回到網站時實際工作。
從歷史記錄API創建的URL沒有任何假冒。當訪問者使用它們加載整個頁面時(通過外部超鏈接或書籤或不是),您只需要正確處理它們。您可以在客戶端或服務器端執行此操作。
處理URLs服務器端當然完全取決於你如何開發你的應用程序,並且這個問題有點超出範圍。
但是,在客戶端,您需要JavaScript解析URL,然後進行相應的響應。我個人發現jQuery Address插件非常適合這個。
包含插件像這樣,包括絕對路徑到你的應用程序的根與state
說法:
<script type="text/javascript" src="jquery.address-1.3.min.js?state=/absolute/path/to/your/application"></script>
然後你不得不jQuery.address
解析URL時,頁面加載和DOM準備:
// Handle the initial load and make the page look the way it's supposed to
$.address.init(function(e) {
// Address and path details can be found in the event object.
// Explore it a bit via console.log()
console.log(e);
});
對於一個很好的,工作的例子,我建議您查看的this jQuery.address
example源以及the jQuery.address
docs。
利用standard organization within URLs。在查詢中對狀態信息進行編碼,可以由客戶端和服務器腳本處理,但始終使用指向您的Web應用程序的相同基本URL。
我從你的答案明白的是,而不是簡單地將內容添加到ULR中作爲「基本URL +」/ somecontent'「,使用類似」基本URL +「?Variable1 = SomeContentA&variable2 = SomeContentB'」。我對麼 ? – vivek
如果你使用Apache,與mod_rewrite你可以直接您想在服務器上的同一資源然而,許多網址。然後,該資源必須檢查URL並以正確的狀態動態創建頁面,無論服務器端還是客戶端完成了。
如果你不使用MVC框架,你可以使用.htaccess
來處理這個提到@nwellcome:
# html5 pushstate (history) support:
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]
</ifModule>
非常感謝您的詳細解答。因此,根據您提供的示例鏈接,當我備份到http://www.asual.com/jquery/address/samples/時,該示例說明了「Simple PHP/mod_rewrite支持示例HTML5的示例」,那麼你會假設他們使用nwellcome的mod_rewrite來引導傳入的超鏈接,然後在應用程序中使用jQuery.address更新地址狀態? – RyJ
是的,確切地說。你最好重寫(不重定向!)應用程序URL下的所有流量到您的應用程序的確切URL(您在'state'參數中指定的相同地址)。 Apache使用mod_rewrite來實現這一點,但任何體面的Web服務器和Web框架將提供某種URL重寫方案。 – Roshambo