Chrome उल्लंघन: [उल्लंघन] हैंडलर ने 83ms रनटाइम लिया


87

मैं अपने प्रोजेक्ट में फेसबुक की लॉगआउट कार्यक्षमता को लागू करने का प्रयास कर रहा हूं। लॉगिन ठीक काम करता है। लेकिन मैं लॉगआउट कोड के साथ जावास्क्रिप्ट कंसोल में निम्नलिखित संदेश प्राप्त कर रहा हूं।

[उल्लंघन] लंबे समय तक चलने वाले जावास्क्रिप्ट कार्य में 318ms का सत्र लिया गया। php: 51 1 sdk.js: 135

[उल्लंघन] हैंडलर ने 83ms रनटाइम (50ms की अनुमति दी)

मैंने अन्य समान थ्रेड्स की खोज करने की कोशिश की है और उन समाधानों ने मेरे लिए काम नहीं किया। मैंने अपने कोड के कुछ हिस्सों को हटाने की कोशिश की और देखा कि कौन सा हिस्सा समस्या दे रहा है। यह बिल्कुल स्पष्ट है कि इसकी त्रुटि फेसबुक के जेएस एसडीके के कारण हो रही है जैसा कि संदेश में देखा गया है। मैंने अपने सभी 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>

स्पष्ट कारणों के लिए मैंने कोड से ऐप-आईडी हटा दिया है। किसी भी मदद की सराहना की है। :)


1
यह सिर्फ एक चेतावनी है, आपको इसकी परवाह नहीं है, आपका कोड अभी भी काम करेगा।
NoNameProvided

1
@NoNameProvided लेकिन क्रोम में लॉगआउट फ़ंक्शन काम नहीं करता है। यह Chrome में login.php पृष्ठ पर पुनर्निर्देशित करने में विफल रहता है।
FreeKrishna

3
इवेंट अगर यह काम नहीं कर रहा है, तो यह उल्लंघन संदेशों से संबंधित नहीं है। वे केवल अनौपचारिक हैं, और आपके कोड पर कोई प्रभाव नहीं है।
NoNameProvided

1
@NoNameProvided फिर फ़ायरफ़ॉक्स में कोड कैसे काम करता है, लेकिन क्रोम में नहीं? मैंने कोड की जाँच की है, इसका सही। आप खुद देख सकते हैं।
FreeKrishna

2
यह एक डुप्लिकेट लगता है: stackoverflow.com/questions/41218507/…
oklas

जवाबों:


184

"क्रोम उल्लंघन" क्रोम या अपने स्वयं के वेब ऐप में त्रुटियों का प्रतिनिधित्व नहीं करते हैं। वे आपके ऐप को बेहतर बनाने में आपकी मदद करने के लिए चेतावनी के बजाय हैं इस स्थिति में, Long running JavaScriptऔर took 83ms of runtimeआपको सचेत कर रहे हैं कि संभवतः आपकी स्क्रिप्ट को गति देने का एक अवसर है।

("उल्लंघन" सबसे अच्छी शब्दावली नहीं है; इसका उपयोग यहाँ एक स्क्रिप्ट को पूर्व-परिभाषित दिशानिर्देश का "उल्लंघन" करने के लिए किया जाता है, लेकिन "चेतावनी" या समान स्पष्ट होगा। ये संदेश पहली बार 2017 की शुरुआत में क्रोम में दिखाई दिए थे और आदर्श रूप से होने चाहिए। "अधिक जानकारी" अर्थ पर विस्तार करने और डेवलपर को सुझाए गए कार्यों को देने का संकेत। उम्मीद है कि भविष्य में उन्हें जोड़ा जाएगा।)


30

शायद थोड़ा सा विषय, बस इस बात से अवगत रहें कि इस तरह के संदेश तब भी देखे जा सकते हैं जब आप setTimeoutनीचे दिए गए जैसे एक async फ़ंक्शन के अंदर एक ब्रेकपॉइंट के साथ अपने कोड को डिबग कर रहे हों :

[Violation] 'setTimeout' handler took 43129ms

यह संख्या (43129ms) इस बात पर निर्भर करती है कि आप कितने समय तक अपने async फ़ंक्शन को रोकते हैं


2
इस टिप्पणी के लिए धन्यवाद मैं इस विषय को खोजने और एक उत्तर पाने में सक्षम था, विषय से या नहीं, यह बहुत उपयोगी था।
स्ट्रैम

12

ऐसा लगता है कि आपको अपना समाधान मिल गया है, लेकिन अभी भी यह दूसरों के लिए उपयोगी होगा, इस पृष्ठ पर Chrome 59 पर आधारित बिंदु है।

4. एनीमेशन फ्रेम के निकाल घटना के शीर्ष-दाईं ओर लाल त्रिकोण को देखें। जब भी आप एक लाल त्रिकोण देखते हैं, तो यह एक चेतावनी है कि इस घटना से संबंधित एक मुद्दा हो सकता है।

यदि आप इन त्रिभुज पर मंडराते हैं, तो आप देख सकते हैं कि वे उल्लंघनकर्ता त्रुटि हैं और बिंदु 4 के अनुसार। हां उस घटना से संबंधित कुछ समस्या है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.