Ich versuche, die Abmeldefunktion von Facebook in meinem Projekt zu implementieren. Login funktioniert gut. Ich sehe jedoch die folgende Meldung in der JavaScript-Konsole mit dem Abmeldecode.
[Verletzung] Die lange laufende JavaScript-Aufgabe dauerte 318 ms session.php: 51 1 sdk.js: 135
[Verletzung] Der Handler benötigte 83 ms Laufzeit (50 ms erlaubt)
Ich habe versucht, nach ähnlichen Threads zu suchen, und diese Lösungen haben für mich nicht funktioniert. Ich habe versucht, Teile meines Codes zu entfernen und festzustellen, welcher Teil ein Problem darstellt. Es ist ziemlich klar, dass es den Fehler aufgrund des JS SDK von Facebook bekommt, wie in der Nachricht zu sehen. Ich habe auch alle meine Chrome-Erweiterungen deaktiviert.
Der Code funktioniert in Firefox einwandfrei, jedoch weder in Chrome noch in Opera . Gibt es eine Methode für mich, um diese Timeout-Dauer zu verlängern? Oder eine andere Methode, um dieses Problem in Chrome zu beheben. Hier ist mein Code zum Abmelden.
<?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>
Aus offensichtlichen Gründen habe ich die App-ID aus dem Code entfernt. Jede Hilfe wird geschätzt. :) :)
quelle
Antworten:
"Chrome-Verstöße" stellen weder in Chrome noch in Ihrer eigenen Web-App Fehler dar. Sie sind stattdessen Warnungen, die Ihnen helfen, Ihre App zu verbessern. In diesem Fall
Long running JavaScript
undtook 83ms of runtime
wenn Sie benachrichtigt werden, besteht wahrscheinlich die Möglichkeit, Ihr Skript zu beschleunigen.("Verletzung" ist nicht die beste Terminologie. Sie wird hier verwendet, um zu implizieren, dass das Skript eine vordefinierte Richtlinie "verletzt", aber "Warnung" oder ähnliches wäre klarer. Diese Nachrichten wurden erstmals Anfang 2017 in Chrome angezeigt und sollten idealerweise eine haben "Weitere Informationen" fordert Sie auf, die Bedeutung zu erläutern und dem Entwickler Vorschläge für Maßnahmen zu unterbreiten. Hoffentlich werden diese in Zukunft hinzugefügt.)
quelle
Vielleicht ein wenig abseits des Themas, seien Sie einfach informiert, dass diese Art von Nachrichten auch angezeigt werden, wenn Sie Ihren Code mit einem Haltepunkt in einer asynchronen Funktion wie der folgenden debuggen
setTimeout
:[Violation] 'setTimeout' handler took 43129ms
Diese Zahl (43129 ms) hängt davon ab, wie lange Sie in Ihrer asynchronen Funktion anhalten
quelle
Es scheint, dass Sie Ihre Lösung gefunden haben, aber es wird dennoch für andere hilfreich sein, auf dieser Seite auf Punkt 59 basierend.
Wenn Sie mit der Maus über dieses Dreieck fahren, können Sie sehen, dass es sich um die Fehler im Handler für Verstöße handelt und gemäß Punkt 4. Ja, es gibt ein Problem im Zusammenhang mit diesem Ereignis.
quelle