jQuery的load()
方法跟jQuery AJAX
同樣都須要用到服務器端來支持,因此你會發現若是你只是寫了靜態頁面並直接雙擊運行,瀏覽器會給你一個XMLHttpRequest cannot load
的錯誤,你須要把代碼放在服務器上才能運行。jquery
若是單單是使用load()
方法,你就會發現,在ajax請求中,不能更新地址欄,地址欄上的「前進」和「後退」按鈕就失效了,帶來了另一種糟糕的用戶體驗。ajax
解決方案有三種,分別是(詳情使用請移步:Ajax保留瀏覽器歷史的解決方案):瀏覽器
使用window.Onhashchange
事件;服務器
使用jQuery.History.js
第三方插件;spa
使用jquery.ba-hashchange.js
第三方插件。插件
因爲我須要兼容ie6
以上的瀏覽器,加上jQuery.History.js
再也不維護,因此我選擇第三種方案來解決以上問題。期間我遇到了如下問題:code
在jquery 1.9以上版本中,控制檯會提示msie
找不到的問題,緣由是browser
屬性已經被移除orm
解決方法:htm
官方建議使用 Modernizr 庫
在引入 jquery 和 jquery.ba-hashchange.js 代碼期間引入如下js代碼
jQuery.browser={};(function(){jQuery.browser.msie=false; jQuery.browser.version=0;if(navigator.userAgent.match(/MSIE ([0-9]+)./)){ jQuery.browser.msie=true;jQuery.browser.version=RegExp.$1;}})();