多くの場合、これが必要です。つまり、特定のWebページを残す場合、ユーザーは必ずしもクリックしてログアウトしないため、セッションは時間内に破壊されません。ユーザーがページを離れるときに自動ログアウト関数を実現するには、WebページのOnbeunloadイベント処理機能でログアウトコマンドを送信する必要があります。この場所は、主にAjaxを使用して実装されています。また、クロスドメインアクセスの問題を伴う場合があります。この場所にはブラウザの互換性の問題があります。
この要件を扱う際には、ブラウザの2つのポイントの非互換性があります。
1.非互換性Ajaxを扱う場合、JQueryはここでそれを解決するために使用されます。
2。ajaxリクエストを送信する際の非互換性
メインコードは次のとおりです。
function logout(){var logouturl = "xxxx"; //ユーザーのログアウトに使用されるurl(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を処理する際に高いセキュリティレベルを持っています。 JSがIEおよびChromeで使用できる多くの許可はFriefoxで制限されているため、
if(useragent.indexof( "msie")> -1){// ie} else {// firefox chrome}このコードは、現在のブラウザタイプを決定します。
FirefoxとChromeの互換性のあるコードは次のとおりです。
$ .ajax({url:logouturl、async:false});Asyncはfalseに設定する必要があります。つまり、それは同期であり、真の非同期メソッドは使用できません。そうしないと、リクエストが送信されない場合があります。実際、Chromeは次のIEコードにも適しています。ブラウザがオフになると、ログアウトコマンドが自動的に送信されます。ただし、ブラウザの更新ボタンをクリックすると、ユーザーを自動的にログアウトすることも望んでいます。 Chromeは上記のコード行を使用してログアウトリクエストを発行することができます。
IEの互換性のあるコードは次のとおりです。
$ .ajax({url:logouturl、crossdomain:true、async:false、datatype: "jsonp"});CrossDomainは、クロスドメインアクセスの問題を解決するために忠実に設定されています。この問題が存在しない場合、このプロパティは無視できます。 Async属性をFalseに設定することが最善であり、Trueも問題ありません。データタイプ:「JSONP」プロパティは、クロスドメインアクセスの問題を解決するためにも使用されます。 CrossDomainと組み合わせて使用されます。クロスドメインの問題はありません。これらの2つのプロパティは省略できます。
上記のコードは、IE9、Chrome27、およびfirefox21でテストされました。
上記は、編集者がwindow.onbeforunload()イベントがajax(タイトル)についてもたらす簡単な議論です。誰もがwulin.comをサポートすることを願っています〜