Il y en a souvent besoin, c'est-à-dire lorsqu'il quitte une certaine page Web, l'utilisateur ne clique pas nécessairement pour se déconnecter, ce qui entraînera la détruire la session à temps. Afin de réaliser la fonction de déconnexion automatique lorsque l'utilisateur quitte la page, la commande de déconnexion doit être envoyée dans la fonction de gestion des événements OnBeforeunLoad de la page Web. Cet endroit est principalement mis en œuvre à l'aide d'Ajax. Parfois, cela implique également des problèmes d'accès inter-domaines. Il y a un problème de compatibilité du navigateur à cet endroit.
Il y a deux points d'incompatibilité des navigateurs lorsqu'ils traitent de cette exigence:
1. Incompatibilité Lorsqu'il s'agit de l'Ajax, jQuery est utilisé pour le résoudre ici.
2. Incompatibilité lors de l'envoi de la demande Ajax
Le code principal est le suivant:
Function Logout () {var logUTUrl = "xxxx"; // URL utilisé pour déconnecter l'utilisateur if (logUTUrl == "") return; var userAgent = Navigator.UserAgent.tolowerCase (); if (userAgent.Indexof ("msie")> - 1) {// ie $ .ajax ({url: logUTUrl, crossdomain: true, async: false, dataType: "jsonp"}); } else {// firefox chrome $ .ajax ({url: logOutl, async: false}); }} window.onbeforeunload = function () {logout (); };Description du code:
Firefox a un niveau de sécurité élevé lors du traitement de JS. De nombreuses autorisations que JS peuvent utiliser dans IE et Chrome sont limitées dans Friefox, donc
if (userAgent.indexof ("msie")> - 1) {// ie} else {// firefox chrome}Ce code détermine le type de navigateur actuel.
Le code compatible pour Firefox et Chrome est le suivant:
$ .ajax ({url: logUTUrl, async: false});Async doit être défini sur False, c'est-à-dire qu'il est synchrone, et la vraie méthode asynchrone ne peut pas être utilisée, sinon la demande ne peut pas être envoyée. En fait, Chrome convient également au code IE suivant. Lorsque le navigateur est désactivé, la commande de déconnexion sera automatiquement envoyée. Cependant, lorsque vous cliquez sur le bouton Actualiser le navigateur, il espère également déconnecter automatiquement l'utilisateur. Chrome ne peut utiliser que la ligne de code ci-dessus pour émettre une demande de déconnexion.
Le code compatible pour IE est le suivant:
$ .ajax ({URL: LOGUTURL, CROSSDOMAIN: true, async: false, dataType: "JSONP"});CrossDomain est défini sur TRUE pour résoudre les problèmes d'accès au domaine inter-domaine. Si ce problème n'existe pas, cette propriété peut être ignorée. Il est préférable de définir l'attribut asynchrone à FALSE, et True est également OK. DataType: la propriété "JSONP" est également utilisée pour résoudre des problèmes d'accès inter-domaines. Il est utilisé en conjonction avec CrossDomain. Il n'y a pas de problème de domaine croisé. Ces deux propriétés peuvent être omises.
Le code ci-dessus a été testé dans IE9, Chrome27 et Firefox21.
Ce qui précède est la brève discussion que l'éditeur vous apporte à propos de l'événement Window.onbeForeunLoad () appelle Ajax (titre). J'espère que tout le monde prend en charge wulin.com ~