javascript - нарушение chrome: [Нарушение] Обработчик занял 83 мс времени выполнения
Я пытаюсь реализовать функции выхода из системы Facebook в своем проекте. Вход работает отлично. Но я столкнулся с получением следующего сообщения в консоли JavaScript с кодом выхода.
[Нарушение] Длительность выполнения JavaScript-задачи заняла 318ms session.php: 51 1 sdk.js: 135
[Нарушение] Обработчик взял 83 мс времени выполнения (разрешено 50 мс)
Я попытался найти другие подобные темы, и эти решения не сработали для меня. Я попытался удалить часть своего кода и посмотреть, какая часть проблемы. Его совершенно ясно, что его получение ошибки из-за Facebook JS SDK, как видно в сообщении. Я также отключил все расширения Chrome.
Код отлично работает в Firefox, но не в Chrome, ни в Opera. Есть ли способ продлить эту продолжительность таймаута? Или любой другой способ исправить эту проблему в хроме. Вот мой код для выхода из системы.
<?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>
По очевидным причинам я удалил App-Id из кода. Любая помощь приветствуется. :)
Ответы
Ответ 1
"Нарушения Chrome" не означают ошибок ни в Chrome, ни в вашем веб-приложении. Вместо этого они являются предупреждениями, которые помогут вам улучшить ваше приложение. В этом случае Long running JavaScript
и took 83ms of runtime
предупреждают вас, что, вероятно, есть возможность ускорить ваш скрипт.
("Нарушение" - не лучшая терминология; оно используется здесь для обозначения того, что сценарий "нарушает" предопределенное руководство, но "предупреждение" или подобное было бы более понятным. Эти сообщения впервые появились в Chrome в начале 2017 года и в идеале должны иметь "Дополнительная информация" побуждает уточнить значение и предложить разработчикам предлагаемые действия. Надеемся, что они будут добавлены в будущем.)
Ответ 2
Кажется, вы нашли свое решение, но все же оно будет полезно другим, на этой странице
4. Отметьте красный треугольник в правом верхнем углу события "Запущен кадр анимации". Всякий раз, когда вы видите красный треугольник, это предупреждение о том, что может быть проблема, связанная с этим событием.
Если вы наведите указатель мыши на эти треугольники, вы увидите, что это ошибки обработчика нарушений и в соответствии с пунктом 4. да, есть некоторая проблема, связанная с этим событием.
Ответ 3
Возможно, немного не по теме, просто имейте в виду, что такого рода сообщения также можно увидеть, когда вы отлаживаете код с точкой останова внутри асинхронной функции, такой как setTimeout
как setTimeout
ниже:
[Violation] 'setTimeout' handler took 43129ms
Это число (43129мс) зависит от того, как долго вы останавливаетесь в асинхронной функции
Ответ 4
Последнее обновление Google Chrome получает это нарушение, я верю, что это ошибка в Chrome, но работа хорошо работает в Firefox... Google Chrome не работает в последнем обновлении.
"Нарушение readystatechange обработчик взял 760ms" после обновления до последнего Chrome