J'essaie d'implémenter la fonctionnalité de déconnexion de Facebook dans mon projet. La connexion fonctionne très bien. Mais je suis confronté à l'obtention du message suivant dans la console JavaScript avec le code de déconnexion.
[Violation] Une tâche JavaScript longuement exécutée a pris 318 ms session.php:51 1 sdk.js:135
[Violation] Le gestionnaire a pris 83 ms de temps d'exécution (50 ms autorisés).
J'ai essayé de rechercher d'autres fils de discussion similaires, mais ces solutions n'ont pas fonctionné pour moi. J'ai essayé de supprimer des parties de mon code et de voir quelle partie pose problème. Il est clair que l'erreur est due au JS SDK de Facebook, comme le montre le message. J'ai également désactivé toutes mes extensions Chrome.
Le code fonctionne bien dans Firefox mais pas dans Chrome, ni dans Opera . Existe-t-il une méthode permettant d'allonger la durée de ce délai ? Ou toute autre méthode pour résoudre ce problème dans Chrome. Voici mon code pour la déconnexion.
<?php
session_start();
//echo $_SESSION["current_user"];
//echo $_COOKIE["current_user"];
session_destroy();
unset($_COOKIE["current_user"]);
setcookie("current_user","",time() -3600, "/","", 0);
//header("location: login.php");
?>
<!doctype html>
<html>
<head>
</head>
<body>
<script>
// Default settings
window.fbAsyncInit = function() {
FB.init({
appId : '<app-id>',
cookie : true,
xfbml : true,
version : 'v2.8'
});
FB.AppEvents.logPageView();
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
window.onload = function(){
logout();
}
function logout(){
console.log("1");
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
FB.logout();
console.log("2");
window.location="login.php";
console.log("3");
}
else{
console.log("4");
window.location="login.php";
console.log("5");
}
});
}
</script>
</body>
</html>
Pour des raisons évidentes, j'ai retiré l'App-Id du code. Toute aide est appréciée :)
4 votes
C'est juste un avertissement, vous n'avez pas à vous en soucier, votre code fonctionnera toujours.
1 votes
@NoNameProvided Mais la fonction de déconnexion ne fonctionne pas dans Chrome. Elle ne parvient pas à rediriger vers la page login.php dans Chrome.
6 votes
Si cela ne fonctionne pas, cela n'a rien à voir avec les messages de violation. Ils sont seulement informels, et n'ont aucun effet sur votre code.
1 votes
@NoNameProvided Alors comment se fait-il que le code fonctionne dans Firefox, mais pas dans Chrome ? J'ai vérifié le code, il est correct. Vous pouvez vérifier vous-même.
0 votes
Comme l'a dit @NoNameProvided, ce n'est pas le problème. Les avertissements n'ont aucune incidence. Il s'agit simplement d'une fonctionnalité de Chrome que Firefox ne possède pas (à ma connaissance). Voyez-vous des erreurs de réseau dans la chronologie ?
1 votes
Voici ce que je pense : votre
window.onunload
est écrasé. Essayez d'utiliser Chrome dans une fenêtre incognito. J'ai eu des problèmes lorsque mes extensions Chrome ajoutaient du javascript qui modifiait le fonctionnement de mon application. Si c'est le cas, envisagez d'utiliser quelque chose à ajouter à l'événement window.unload sans utiliser la fonction window.unload elle-même, par exemple :$( window ).on('unload', function() { return "Handler for .unload() called."; });
0 votes
Non, selon ce fil de discussion( productforums.google.com/forum/#!topic/chrome/ ) la violation peut arrêter l'exécution du script, j'essaie toujours de trouver le bug et comment désactiver ce comportement sur chrome.
3 votes
Il semble qu'il s'agisse d'un doublon : stackoverflow.com/questions/41218507/
0 votes
Duplicata possible de Violation Une tâche JavaScript longuement exécutée a pris xx ms