国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

淺談window.onbeforeunload() 事件調用ajax

2019-11-20 09:35:07
字體:
來源:轉載
供稿:網友

經常有這樣的需求,就是在離開某個web頁面時,用戶不一定點注銷,這樣會導致會話不能及時銷毀。為實現用戶離開頁面時,自動注銷功能,需要在web頁面的onbeforeunload事件處理函數中發送注銷命令。這個地方大多用Ajax實現。有時還涉及到跨域訪問的問題。這個地方就存在瀏覽器的兼容性問題。

瀏覽器在處理這個需求時的不兼容性有如下兩點:

1、處理Ajax時的不兼容性,這里使用jQuery來解決。

2、在發送Ajax請求時的不兼容性

主要代碼如下:

function logout() {         var logoutURL = "xxxx"; //用于注銷用戶的url         if (logoutURL == "") return;         var userAgent = navigator.userAgent.toLowerCase();         if(userAgent.indexOf("msie")>-1) { //IE           $.ajax({ url: logoutURL, crossDomain: true, async: false, dataType: "jsonp" });         }else { //FireFox Chrome           $.ajax({ url: logoutURL, async: false });         }       }        window.onbeforeunload = function () {         logout();       }; 

代碼說明:

firefox在處理js時的安全級別較高,很多IE、Chrome中js可以使用的權限在Friefox中被限制,因此通過

if(userAgent.indexOf("msie")>-1) { //IE                  }else { //FireFox Chrome                  }

這段代碼來判斷當前瀏覽器類型。

針對Firefox、Chrome的兼容代碼如下:

$.ajax({ url: logoutURL, async: false });

async需要設為false,即為同步,不能采用true異步的方式,否則請求有可能發不出去。其實Chrome也適用于下面針對IE的代碼,在關掉瀏覽器時會自動發送注銷命令,但是點瀏覽器的刷新按鈕時也希望能自動注銷用戶時,Chrome就只能采用上面這行代碼才能發出注銷請求

針對IE的兼容代碼如下:

$.ajax({ url: logoutURL, crossDomain: true, async: false, dataType: "jsonp" });

crossDomain設置為true是為了解決跨域訪問問題,如果不存在這個問題,這個屬性可以忽略。async屬性最好也設成false,true也可以。dataType:"jsonp"這個屬性也是為解決跨域訪問問題,和crossDomain配合使用,不存在跨域問題,這兩個屬性可省略。

以上代碼在IE9、Chrome27、Firefox21測試通過。

以上就是小編為大家帶來的淺談window.onbeforeunload() 事件調用ajax(標題)全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涟源市| 文成县| 砀山县| 陈巴尔虎旗| 临江市| 湟源县| 河源市| 彰武县| 华池县| 东阳市| 德惠市| 卢湾区| 仁寿县| 四川省| 新泰市| 河东区| 财经| 城口县| 郧西县| 卢氏县| 樟树市| 通榆县| 纳雍县| 新郑市| 法库县| 崇信县| 垫江县| 乌海市| 横峰县| 山阳县| 龙南县| 台湾省| 出国| 石柱| 乐亭县| 巴塘县| 武平县| 金昌市| 樟树市| 普兰县| 鄂托克旗|