javascript - chrome违规:[Violation] Handler花了83ms的运行时间

问题描述 投票:36回答:3

我正在尝试在我的项目中实现Facebook的注销功能。登录工作正常。但我正面临着使用注销代码在JavaScript控制台中获取以下消息。

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

[Violation]处理程序运行时间为83毫秒(允许50毫秒)

我试图寻找其他类似的线程,这些解决方案对我来说没有用。我尝试删除部分代码,看看哪个部分有问题。很明显,由于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。任何帮助表示赞赏。 :)

javascript google-chrome facebook-javascript-sdk
3个回答
77
投票

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

(“违规”不是最好的术语;它在这里用来暗示脚本“违反”预定义的指南,但“警告”或类似的内容会更清楚。这些消息最初在2017年初出现在Chrome中,理想情况下应该有一个“更多信息”提示详细说明其含义并向开发人员提供建议的操作。希望将来可以添加这些操作。)


6
投票

看来你已经找到了你的解决方案,但在this page上,它仍然会对其他人有所帮助

4.注意Animation Frame Fired事件右上角的红色三角形。每当您看到红色三角形时,都会警告可能存在与此事件相关的问题。

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


5
投票

也许有点偏离主题,只是被告知在使用像setTimeout这样的异步函数中的断点调试代码时,也可以看到这些消息,如下所示:

[Violation] 'setTimeout' handler took 43129ms

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

© www.soinside.com 2019 - 2024. All rights reserved.