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мс) зависит от того, как долго вы останавливаетесь в асинхронной функции