Chrome违规:[Violation]处理程序耗时83ms


81

我正在尝试在我的项目中实现Facebook的注销功能。登录正常。但是我正面临着注销控制台在JavaScript控制台中收到以下消息的信息。

[违规]长时间运行的JavaScript任务花费了318ms session.php:51 1 sdk.js:135

[违反]处理程序花费了83ms的运行时间(允许50ms)

我试图搜索其他类似的线程,但这些解决方案对我而言并不奏效。我试着删除部分代码,看看哪一部分出了问题。很明显,由于消息中显示的Facebook的JS SDK,它收到了错误。我还禁用了所有的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中不起作用。它无法重定向到Chrome中的login.php页面。
FreeKrishna

3
事件,如果它不起作用,则与违规消息无关。它们只是非正式的,对您的代码没有影响。
NoName提供

1
@NoNameProvided那么,代码如何在Firefox中而不是在Chrome中工作?我检查了代码,正确无误。你可以自己看看。
FreeKrishna

Answers:


172

“ Chrome违规”不代表Chrome或您自己的网络应用中的错误。相反,它们是警告,可以帮助您改善应用程序。在这种情况下,Long running JavaScripttook 83ms of runtime提醒您可能有机会加快脚本运行速度。

(“违规”不是最好的术语;此处用来暗示脚本“违反”了预定义的准则,但“警告”或类似内容会更清晰。这些消息最早于2017年初出现在Chrome中,理想情况下应具有“更多信息”提示您详细说明含义,并向开发人员提供建议的操作。希望将来会添加这些操作。)


28

可能有点偏离主题,只是被告知,当您在异步函数中使用断点调试代码时,也可以看到此类消息,setTimeout如下所示:

[Violation] 'setTimeout' handler took 43129ms

该数字(43129毫秒)取决于您在异步功能中停止的时间


1
多亏了此评论,我得以找到该主题并获得答案,无论是否有主题,它都非常有用。
斯特拉明

12

似乎您已经找到了解决方案,但仍会在此页面上基于Chrome 59的点上找到其他解决方案。

4.请注意“动画帧触发”事件右上角的红色三角形。每当您看到红色三角形时,都会警告您可能与此事件有关。

如果将鼠标悬停在这些三角形上,则可以看到这些是违规处理程序错误,并且按照第4点所述。是的,有一些与此事件相关的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.