Порушення 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.