2011-04-19 32 views
1

我有一個在後端使用Java的現有Web項目。它使用絕對路徑在頁面之間進行鏈接。在JQM中使用絕對URL

我目前正在將項目轉換爲使用jQuery Mobile。我首先嚐試使用相關url,但是改變項目中的整個url結構並不容易,特別是當很多url都是隨時生成的時候,並且找到相對於當前顯示頁面的正確相對路徑是有點複雜(主要是因爲我們自己的AJAX調用的目標是服務器上的不同網址端點)。

因此,我開始考慮是否可以更改JQM代碼以僅使用絕對URL。我目前正在嘗試將location.hash的用法更改爲location.href,以使其重寫URL中的整個路徑,而不僅僅是哈希後的部分。你們有人試過嗎?可能嗎?

旁註:爲什麼JQM首先有相對URL模型和散列?是否支持回溯?在我看來,這很不可能,因爲他們將整個歷史堆棧保留在urlHistory字段中。還是僅僅處理頁面內的相對鏈接?在這種情況下,是否值得考慮在JQM中創建兩種URL模式,並讓框架用戶決定使用哪種模式(可能在'mobileinit'中):如果實現使用相對鏈接(即靜態HTML項目在哪裏JavaScript完成所有工作),另一個是絕對鏈接(即動態Web項目,其中大部分計算是在服務器上完成的)?它也可以解決這個問題,如愚蠢的網址,如http://server.com/folder1/folder2/page.html#../../index.html ...

+0

好的,因此改變location.href的天真解決方案無法工作,因爲每當location.href被更改(我們不希望在jQM中)時,瀏覽器會自動刷新整個頁面。但是,在HTML5中,支持[history.pushState](http://spoiledmilk.dk/blog/html5-changing-the-browser-url-without-refreshing-page),並且有一個庫History.js可以自動檢測功能是否可用,並回退到更改舊版瀏覽器的散列。 – 2011-04-19 12:41:07

回答

1

爲什麼JQM具有哈希值的相對URL模型?是否支持回溯?

我對他們爲什麼使用#進行導航的理解是因爲他們希望頁面感覺更加本地化。擁有一個頁面來保存所有內容,並在「頁面」之間使用平滑過渡可以產生這種幻覺,而不是點擊鏈接,然後等待全新的頁面下載。

對於試圖改造一個網站,jQuery Mobile的工作,我看到一些博客提示:

<script> 
     $(document).ready(function() { 
      // disable ajax nav 
      $.mobile.ajaxLinksEnabled = false; 
     }); 
    </script> 

到目前爲止,我還沒有得到這與我現有的頁面來工作,但它在邏輯上成爲位的意義在於,jqm將停止嘗試將您的鏈接轉換爲像您上面建議的ajax請求。這意味着您在點擊鏈接時會放棄一些轉換,但可能會節省相當多的時間來獲取移動頁面......只是希望我能夠實際使用它。