Html5+razor+jqmobile尝鲜
? 最近為了給客戶演示手機應用所以使用jquerymobile,asp.net mvc做了一個簡單的例子,滿足如下要求較好的界面顯示以及離線應用。下面大體描述一下過程:
? 1,使用nuget里的51Degrees.mobi進行客戶端類型的判斷,手機訪問的話自動重定向到mobile的area下,遇到的問題:mobile下的AreaRegistration調用RegisterArea時要使用命名空間
? 2,是jqmobile和razor進行前臺的顯示,使用jqmobile的進行信息的顯示等比較好處理,但是產生的問題是對于授權這種重定向,由于jqmobile使用的是ajax獲取的方式獲得內容填充page顯示,使用ajax獲取時xmlhttprequest自動進行了重定向獲取了重定向后的內容,而在success里無法獲得重定向的header導致的問題就是頁面上顯示的路徑是不正確的,比如用戶訪問某個controller的方法的時候如果沒有授權定向到登錄頁但是在jqmobile的主頁面dom上增加的page的fileurl指向的是controller的路徑而不是授權的controller的路徑,解決方法,可以都修改為使用ajax的方式進行授權登錄的驗證成功的換前臺進行changepage,或者使用razor渲染的時候進行判斷,如果沒有登錄就渲染一個指向登錄的鏈接
3,使用persitencejs和相應的jqmobile插件進行數據的緩存。主頁面設置cache.manifest,同時緩存其他常腳本,css等。修改jquery的原生ajax方法在聯網的情況下全部用原始的ajax獲取數據,不聯網的情況下獲取本地localdatabse緩存的數據。緩存時要刪除舊的緩存數據只添加當前ajax請求對應路徑的最新的html,這兒遇到一個問題就是persitence的數據操作使用callback的方式進行數據的查找而callback執行的時間不確定所以數據的刪除和添加都要寫到callback里而不要再callback里寫刪除在外層寫添加。還有一個問題是在線的檢測問題,查看htmldemo網站發現safari和chrome都不支持onLine的檢測,所以后來改用定時輪詢特定頁的方式實現在線監測
使用筆記本上的chrome測試程序再聯網和斷網的情況下可以正常運行,但是使用我的milestone(2.1)在線的情況下測試完全沒有問題,但是切換到飛行模式后ajax請求都會進入到error中,使用about:debug打開android的log顯示查看本地數據的緩存和輪詢檢測都沒問題,但是ajax都返回了error后來去掉cache.manifest就可以了,但是去掉后又無法訪問離線頁面,在android2.2的虛擬機上測試沒有問題,可能是瀏覽器實現上有差異
源代碼
轉載于:https://www.cnblogs.com/sdhjl2000/archive/2011/03/24/1994358.html
總結
以上是生活随笔為你收集整理的Html5+razor+jqmobile尝鲜的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 显示Flash时控制其的宽度与高度
- 下一篇: 中文微博与社会化媒体的区域距离