Порушення Chrome: [Порушення] Обробник зайняв 83 мс часу роботи


87

Я намагаюся застосувати функцію виходу з Facebook у своєму проекті. Вхід працює чудово. Але я стикаюся з отриманням наступного повідомлення в консолі JavaScript із кодом виходу.

[Порушення] Тривале завдання JavaScript зайняло 318 мс session.php: 51 1 sdk.js: 135

[Порушення] Обробник зайняв 83 мс часу роботи (дозволено 50 мс)

Я намагався шукати інші подібні теми, і ці рішення у мене не працювали. Я спробував видалити частини мого коду і подивитися, яка частина видає проблему. Цілком зрозуміло, що помилка з’являється через JS SDK Facebook, як видно з повідомлення. Я також вимкнув усі свої розширення Chrome.

Код чудово працює у Firefox, але ні в Chrome, ні в Opera . Чи існує якийсь спосіб для мене, щоб продовжити цей час очікування? Або будь-який інший спосіб виправити цю проблему в chrome. Ось мій код для виходу.

<?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
Це лише попередження, вам не потрібно про це дбати, ваш код все одно буде працювати.
— NoName Надано

1
@NoNameProvided Але функція виходу не працює в Chrome. Не вдається перенаправити на сторінку login.php у Chrome.
— FreeKrishna

3
Подія, якщо це не спрацює, це не пов’язано з повідомленнями про порушення. Вони лише неформальні і не впливають на ваш код.
— NoName Надано

1
@NoNameProvided Тоді як так код працює у Firefox, а не в Chrome? Я перевірив правильний код. Ви можете поглянути самі.
— FreeKrishna

2
Начебто дублікат: stackoverflow.com/questions/41218507 / ...
— oklas

Відповіді:


184

"Порушення Chrome" не означає помилок ні в Chrome, ні у вашій власній веб-програмі. Натомість вони є попередженнями, які допоможуть вам покращити програму. У цьому випадку, Long running JavaScriptі took 83ms of runtimeпопереджаємо вас, ймовірно, є можливість прискорити ваш сценарій.

("Порушення" - не найкраща термінологія; тут використовується, щоб натякати на те, що скрипт "порушує" заздалегідь визначену настанову, але "попередження" або подібне було б зрозумілішим. Ці повідомлення вперше з’явилися в Chrome на початку 2017 року і в ідеалі повинні мати Підказка "Докладніше", щоб детальніше пояснити значення та надати розробнику запропоновані дії. Сподіваємось, їх буде додано надалі.)


30

Можливо, трохи не в темі, просто поінформуйте, що такі повідомлення також можна побачити, коли ви налагоджуєте свій код з точкою зупинки всередині асинхронної функції, як показано setTimeoutнижче:

[Violation] 'setTimeout' handler took 43129ms

Це число (43129 мс) залежить від того, як довго ви зупиняєтесь у своїй функції асинхронізації


2
Завдяки цьому коментарю я зміг знайти цю тему та отримати відповідь, не в темі чи ні, це було дуже корисно.
— stramin

12

Здається, ви знайшли своє рішення, але все одно воно буде корисним для інших, на цій сторінці, на базі Chrome 59.

4.Зверніть увагу на червоний трикутник у верхньому правому куті події Звільнений кадр анімації. Всякий раз, коли ви бачите червоний трикутник, це попередження про те, що може виникнути проблема, пов’язана з цією подією.

Якщо навести курсор на цей трикутник, ви побачите, що це помилки обробника порушень і відповідно до пункту 4. так, є певна проблема, пов’язана з цією подією.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.