原文:
ie8,9下的ajax快取問題
最近在做乙個**的登入註冊框,前端使用了jquery。由於sign和login不是在單獨的頁面上,而是以乙個彈出框出現。所以決定使用ajax來實現註冊和登入功能。本以為可以一帆風順,結果在測試的時候發現了奇怪的問題。
在用chrome , ff , ie10+測試的時候基本沒問題,但在ie8,9上執行時卻出現了輸入正確的使用者名稱和密碼不能登入的情況。一開始還以為是session丟失了,開始吐槽後台的框架。
但是在耐心的除錯後,發現session並沒有丟失。這下可急死我了,難道混了這麼久連乙個註冊登入都搞不定?這讓我不禁妄自菲薄,感嘆人生百態,世事無常。就這樣過了1/3炷香之後,我決定要振作起來。
在仔細觀察我那沒長幾個注釋的**後,我發現$.ajax中的url有點奇怪。雖然位址是正確的,但程式猿和攻城獅的直覺告訴我,ie8 9兩兄弟有可能自作多情地快取了我的ajax。想到這裡,雙手突然有些顫抖,慌忙在url後加了個時間戳。
//就像這樣url:myurl+"?t="+(new date).valueof()
然後清個快取再試試,成功!可以正常登入了。
這樣,為了對付低版本ie過分的熱情,在使用$.ajax時可以將其cache屬性設定為false(未測試過),
cache:
要求為boolean型別的引數,預設為true(當datatype為script時,預設為false),設定為false將不會從瀏覽器快取中載入請求資訊。
或者在全域性中設定(未測試過)
//$.ajaxsetup() 方法設定全域性 ajax 預設選項。$.ajaxsetup();
這樣就不用再擔心快取了。
但是,快取並非是為了給我們帶來麻煩而設定的,畢竟別的瀏覽器可以正常使用。所以,要為ie8 9單獨設定禁用快取中的資訊。
//jquery 1.9.0後取消了$.browserif($.browser.msie&&($.browser.version=="8.0"||$.browser.version=="9.0"))
在1.9.0之後可以使用$.support來判斷
// ie6789,input元素的checked屬性不能被拷貝// ie會拷貝事件
if(!$.support.nocloneevent&&!$.support.noclonechecked)
$.support主要用於 jquery 的內部使用,感覺一點也不好用。
IE8,9下的ajax快取問題
原文 ie8,9下的ajax快取問題 最近在做乙個 的登入註冊框,前端使用了jquery。由於sign和login不是在單獨的頁面上,而是以乙個彈出框出現。所以決定使用ajax來實現註冊和登入功能。本以為可以一帆風順,結果在測試的時候發現了奇怪的問題。在用chrome ff ie10 測試的時候基本...
inline block在IE8,9的間隙問題
今天嘗試製作tab效果時候,發現在ie8,9下,有個性的inline block的元素在內容為空,或者內容是block的情況下,與下方block元素有間隙!在查詢相關例子並實踐發現,處理這種情況的解決方案是 設定inline block的父元素font size為零,然後再設定inline bloc...
Ajax的IE快取問題
ajax的ie快取問題,會造成用open時用get方法不能重複提交。解決的辦法有以下幾種 1.客戶端在url後新增隨機數.new date gettime 或者math.random 或者送請求前加上 或者用post方法提交 2.伺服器端禁用快取.response.setheader pragma ...