इंटरनेट कनेक्शन का पता लगाना ऑफ़लाइन है?


246

कैसे इंटरनेट कनेक्शन का पता लगाने के लिए जावास्क्रिप्ट में ऑफ़लाइन है?


यदि आप वेबस्कैट का उपयोग कर सकते हैं या पहले से कर सकते हैं - वेबसोकेट में एक क्लोज इवेंट है, जिसे कॉल किया जाना चाहिए, यदि उपयोगकर्ता सर्वर से कनेक्शन खो देता है।
सिमोन

जवाबों:


135

आप यह निर्धारित कर सकते हैं कि असफल XHR अनुरोध करने से कनेक्शन खो गया है

मानक दृष्टिकोण कुछ बार अनुरोध को पुनः प्राप्त करने के लिए है। यदि यह नहीं गुजरता है, तो उपयोगकर्ता को कनेक्शन की जांच करने के लिए सतर्क करें , और इनायत से विफल रहें

सिडेनोट: पूरे एप्लिकेशन को "ऑफ़लाइन" स्थिति में रखने के लिए राज्य को संभालने में बहुत अधिक त्रुटि वाले काम हो सकते हैं .. वायरलेस कनेक्शन आ सकते हैं और जा सकते हैं, आदि। इसलिए आपका सबसे अच्छा शर्त केवल शान से असफल होना हो सकता है, संरक्षित करना डेटा, और उपयोगकर्ता को सचेत करें .. उन्हें अंत में कनेक्शन समस्या को ठीक करने की अनुमति देता है अगर एक है, और अपने ऐप का उपयोग उचित मात्रा में करना जारी रखना है।

पक्षीय लेख: आप कनेक्टिविटी के लिए Google जैसी विश्वसनीय साइट की जांच कर सकते हैं, लेकिन यह पूरी तरह से उपयोगी नहीं हो सकता है क्योंकि सिर्फ अपना अनुरोध करने की कोशिश कर रहा है, क्योंकि जब तक Google उपलब्ध हो सकता है, आपका अपना आवेदन नहीं हो सकता है, और आप अभी भी जा रहे हैं अपनी कनेक्शन समस्या को संभालना होगा। Google को एक पिंग भेजने की कोशिश करना यह पुष्टि करने का एक अच्छा तरीका होगा कि इंटरनेट कनेक्शन स्वयं नीचे है, इसलिए यदि वह जानकारी आपके लिए उपयोगी है, तो यह परेशानी का कारण हो सकता है।

सिडेनोट : एक पिंग भेजना उसी तरह से प्राप्त किया जा सकता है जिससे आप किसी भी तरह का दो-तरफा अजाक्स अनुरोध करेंगे, लेकिन इस मामले में Google को एक पिंग भेजना, कुछ चुनौतियों का सामना करेगा। सबसे पहले, हमारे पास समान क्रॉस-डोमेन समस्याएं होंगी जो आम तौर पर अजाक्स संचार बनाने में सामना होती हैं। एक विकल्प सर्वर-साइड प्रॉक्सी सेट करना है, जिसमें हम वास्तव में pingGoogle (या जो भी साइट) हैं, और ऐप में पिंग के परिणाम लौटाते हैं। यह एक कैच -22 हैक्योंकि अगर इंटरनेट कनेक्शन वास्तव में समस्या है, तो हम सर्वर पर नहीं जा पाएंगे, और यदि कनेक्शन समस्या केवल हमारे स्वयं के डोमेन पर है, तो हम अंतर नहीं बता पाएंगे। अन्य क्रॉस-डोमेन तकनीकों की कोशिश की जा सकती है, उदाहरण के लिए, आपके पृष्ठ में एक iframe एम्बेड करना जो google.com को इंगित करता है, और फिर सफलता / विफलता के लिए iframe को पोलिंग (सामग्री आदि की जांच करें)। छवि को एम्बेड करना वास्तव में हमें कुछ भी नहीं बता सकता है, क्योंकि हमें संचार तंत्र से एक उपयोगी प्रतिक्रिया की आवश्यकता है ताकि जो कुछ भी हो रहा है उसके बारे में एक अच्छा निष्कर्ष निकाला जा सके। तो फिर, एक पूरे के रूप में इंटरनेट कनेक्शन की स्थिति का निर्धारण करना इसके लायक होने से अधिक परेशानी हो सकती है। आपको अपने विशिष्ट ऐप के लिए इन विकल्पों का वजन करना होगा।


84
दोहराया "सिडेनोट" ड्वाइट श्रुत की तरह लगता है "प्रश्न ..." :-)
ब्रायन केली

19
बोल्ड में "कैच -22" क्यों है?
कोडिंगबियर

33
अब 2012 में आप चर navigator.onLine;) की जांच कर सकते हैं
जोओ पिंटो जेरोनिमो

13
navigator.online/offline बहुत ही कारणों से, अविश्वसनीय भी है। देखें stackoverflow.com/questions/3181080/…
एफ्रान कोबीसी 14

17
आप इस उद्देश्य के लिए निर्मित एक ओपन-सोर्स लाइब्रेरी ऑफलाइन.जेएस की जांच करना चाहते हैं ।
एडम

51

IE 8 window.navigator.onLine संपत्ति का समर्थन करेगा ।

लेकिन निश्चित रूप से अन्य ब्राउज़रों या ऑपरेटिंग सिस्टम के साथ मदद नहीं करता है। मैं अनुमान लगाता हूं कि अन्य ब्राउज़र विक्रेता उस संपत्ति को प्रदान करने का निर्णय लेंगे और साथ ही साथ अजाक्स अनुप्रयोगों में ऑनलाइन / ऑफ़लाइन स्थिति जानने के महत्व को भी प्रदान करेंगे।

जब तक ऐसा होता है, या तो एक्सएचआर या एक Image()या <img>अनुरोध आप चाहते हैं कार्यक्षमता के लिए कुछ करीबी प्रदान कर सकते हैं।

अपडेट (2014/11/16)

प्रमुख ब्राउज़र अब इस संपत्ति का समर्थन करते हैं, लेकिन आपके परिणाम अलग-अलग होंगे।

मोज़िला प्रलेखन से उद्धरण :

क्रोम और सफारी में, यदि ब्राउज़र स्थानीय क्षेत्र नेटवर्क (LAN) या एक राउटर से कनेक्ट करने में सक्षम नहीं है, तो यह ऑफ़लाइन है; अन्य सभी स्थितियां लौटती हैं true। इसलिए जब आप मान सकते हैं कि ब्राउज़र ऑफ़लाइन है जब यह एक falseमूल्य लौटाता है , तो आप यह नहीं मान सकते कि एक सही मूल्य आवश्यक रूप से इसका मतलब है कि ब्राउज़र इंटरनेट का उपयोग कर सकता है। आप झूठी सकारात्मकता प्राप्त कर सकते हैं, जैसे कि उन मामलों में जहां कंप्यूटर एक वर्चुअलाइजेशन सॉफ़्टवेयर चला रहा है जिसमें वर्चुअल ईथरनेट एडेप्टर होते हैं जो हमेशा "कनेक्ट" होते हैं। इसलिए, यदि आप वास्तव में ब्राउज़र की ऑनलाइन स्थिति निर्धारित करना चाहते हैं, तो आपको जाँच के लिए अतिरिक्त साधन विकसित करने चाहिए।

फ़ायरफ़ॉक्स और इंटरनेट एक्सप्लोरर में, ब्राउज़र को ऑफ़लाइन मोड में बदलना एक falseमूल्य भेजता है । अन्य सभी स्थितियाँ एक trueमान लौटाती हैं।


5
navigator.onLine HTML5 का हिस्सा है - अन्य ब्राउज़रों में पहले से ही विकास संस्करण हैं जो इसे प्रदान करते हैं - यह आज फ़ायरफ़ॉक्स 3 में पहले से ही उपलब्ध है।
०२

-लेकिन दुर्भाग्य से IE के पुराने संस्करणों में उपलब्ध नहीं है, जिसे हमें अक्सर समर्थन की आवश्यकता होती है।
केपरो

22
navigator.onLine ब्राउज़र की स्थिति दिखाता है और वास्तविक कनेक्शन नहीं। तो यू के पास उर ब्राउज़र सेट हो सकता है, लेकिन यह वास्तव में विफल रहेगा क्योंकि कनेक्शन डाउन है। यदि ब्राउज़र ऑफ़लाइन ब्राउज़िंग पर सेट है, तो navigator.onLine केवल झूठी होगी।

5
अगर मैं अपने Nexus7 पर WI-FI को बंद कर देता हूं, तो पेज अभी भी कहता है कि navigator.onLine TRUE है। बुरा ...
walv

42

लगभग सभी प्रमुख ब्राउज़र अब window.navigator.onLineसंपत्ति का समर्थन करते हैं, और इसी onlineऔर offlineखिड़की की घटनाओं:

window.addEventListener('online', () => console.log('came online'));
window.addEventListener('offline', () => console.log('came offline'));

अपने सिस्टम या ब्राउज़र को ऑफ़लाइन / ऑनलाइन मोड में सेट करने का प्रयास करें और window.navigator.onLineमूल्य परिवर्तनों के लिए कंसोल या संपत्ति की जांच करें । आप इसे इस वेबसाइट पर भी देख सकते हैं ।

हालाँकि यह उद्धरण मोज़िला प्रलेखन से लिया गया है :

क्रोम और सफारी में, यदि ब्राउज़र किसी स्थानीय क्षेत्र नेटवर्क (LAN) या एक राउटर से कनेक्ट करने में सक्षम नहीं है, तो यह ऑफ़लाइन है; अन्य सभी स्थितियां लौटती हैं true। इसलिए जब आप मान सकते हैं कि ब्राउज़र ऑफ़लाइन है जब वह falseमान लौटाता है , तो आप यह नहीं मान सकते कि एक trueमूल्य आवश्यक रूप से इसका मतलब है कि ब्राउज़र इंटरनेट तक पहुंच सकता है । आप झूठी सकारात्मकता प्राप्त कर सकते हैं, जैसे कि उन मामलों में जहां कंप्यूटर एक वर्चुअलाइजेशन सॉफ़्टवेयर चला रहा है जिसमें वर्चुअल ईथरनेट एडेप्टर होते हैं जो हमेशा "कनेक्ट" होते हैं। इसलिए, यदि आप वास्तव में ब्राउज़र की ऑनलाइन स्थिति निर्धारित करना चाहते हैं, तो आपको जाँच के लिए अतिरिक्त साधन विकसित करने चाहिए।

फ़ायरफ़ॉक्स और इंटरनेट एक्सप्लोरर में, ब्राउज़र को ऑफ़लाइन मोड में बदलना एक falseमूल्य भेजता है । फ़ायरफ़ॉक्स 41 तक, अन्य सभी स्थितियाँ एक trueमान लौटाती हैं; फ़ायरफ़ॉक्स 41 के बाद से, ओएस एक्स और विंडोज पर, मूल्य वास्तविक नेटवर्क कनेक्टिविटी का पालन करेगा।

(जोर मेरा खुद का है)

इसका मतलब है कि यदि window.navigator.onLineहै false(या आपको कोई offlineघटना मिलती है ), तो आपको इंटरनेट कनेक्शन नहीं होने की गारंटी है।

यदि यह trueफिर भी है (या आपको कोई onlineघटना मिलती है ), इसका मतलब केवल यह है कि सिस्टम किसी नेटवर्क से जुड़ा है, सबसे अच्छा। इसका मतलब यह नहीं है कि आपके पास उदाहरण के लिए इंटरनेट का उपयोग है। यह जांचने के लिए, आपको अभी भी अन्य उत्तरों में वर्णित समाधानों में से एक का उपयोग करने की आवश्यकता होगी।

मैंने शुरू में इसे ग्रांट वैगनर के जवाब के अपडेट के रूप में पोस्ट करने का इरादा किया था, लेकिन यह बहुत अधिक संपादित लगता था, खासकर यह देखते हुए कि 2014 का अपडेट पहले से ही नहीं था


सबसे बढ़िया उत्तर। धन्यवाद।
vibs2006

1
मुझे हाल ही में ऑफ़लाइन व्यवहार पर थोड़ा काम करने का अवसर मिला। घटनाओं का उपयोग करने के लिए महान हैं, लेकिन BUT ios सफारी समस्याएं पैदा करेगा। जब आप अपने फोन पर इंटरनेट चालू करते हैं तो ऑफ़लाइन / ऑनलाइन घटनाओं में 2 सेकंड तक की देरी होगी और यह दृश्य रेंडरिंग कारणों से समस्याग्रस्त हो सकता है, क्योंकि आप भविष्य की भविष्यवाणी नहीं कर सकते। यह सिर्फ कुछ है जिसका मैं उल्लेख करना चाहता था और किसी की मदद कर सकता था।
तीज

38

यह करने के कई तरीके हैं:

  • AJAX आपकी अपनी वेबसाइट के लिए अनुरोध करता है। यदि वह अनुरोध विफल हो जाता है, तो यह एक अच्छा मौका है कि यह गलती पर कनेक्शन है। JQuery प्रलेखन पर एक अनुभाग है विफल रहा है AJAX के अनुरोधों को संभालने । इसे करते समय समान उत्पत्ति नीति से सावधान रहें , जो आपको आपके डोमेन के बाहर की साइटों तक पहुँचने से रोक सकती है।
  • आप एक onerrorमें डाल सकते हैं img, जैसे

    <img src='http://www.example.com/singlepixel.gif' 
          onerror='alert("Connection dead");' />

    यदि स्रोत छवि को स्थानांतरित / नाम दिया गया है, तो यह विधि विफल भी हो सकती है, और आमतौर पर अजाक्स विकल्प के लिए एक अवर विकल्प होगा।

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


36
 if(navigator.onLine){
  alert('online');
 } else {
  alert('offline');
 }

11
यदि ब्राउज़र पर यह हमेशा TRUE देता है।
स्लावचो

2
खैर पहले मैं केवल LAN को निष्क्रिय करने की कोशिश कर रहा था, लेकिन यह हमेशा TRUE लौटा रहा था। इसलिए जब मैंने सभी नेटवर्क (LAN2, Virtual Box आदि) को निष्क्रिय कर दिया तो यह FALSE लौट आया।
स्लावचो

3
यह उत्तर 3 साल पहले के कई मौजूदा उत्तरों की नकल करता है।
जेसनमाचर

2
इसकी इंटरनेट कनेक्टिविटी की जाँच नहीं, यह केवल LAN कनेक्टिविटी की ही जाँच कर रहा है
सुगन्थ जी

मेरे लिए HTML 5, जावास्क्रिप्ट, मैक बुक में (वाईफाई का उपयोग करके) मोबाइल में भी काम किया। लेकिन मुद्दा यह है कि जब हर बार वाईफाई वापस आ जाता है तब भी मैं वाई-फाई से दूर रहता हूं।
एस.यादव

11

एचटीएमएल 5 एप्लीकेशन कैश एपीआई नेविगेटर.ऑनलाइन को निर्दिष्ट करता है, जो वर्तमान में आईई 8 बेट्स, वेबकिट (जैसे। सफारी) नाइटलाइफ़ में उपलब्ध है, और पहले से ही फ़ायरफ़ॉक्स 3 में समर्थित है।


11

आप $ .ajax () के errorकॉलबैक का उपयोग कर सकते हैं , जो अनुरोध विफल होने पर आग हो जाती है। यदि textStatusस्ट्रिंग "टाइमआउट" के बराबर है, तो इसका मतलब है कि कनेक्शन टूट गया है:

function (XMLHttpRequest, textStatus, errorThrown) {
  // typically only one of textStatus or errorThrown 
  // will have info
  this; // the options for this ajax request
}

से दस्तावेज़ :

त्रुटि : अनुरोध को विफल होने पर कहा जाने वाला कार्य। फ़ंक्शन को तीन तर्क दिए गए हैं: XMLHttpRequest ऑब्जेक्ट, एक स्ट्रिंग जो त्रुटि के प्रकार और एक वैकल्पिक अपवाद ऑब्जेक्ट का वर्णन करती है, यदि एक हुई। दूसरे तर्क के लिए संभावित मान (शून्य के अलावा) "टाइमआउट", "त्रुटि", "नोटमोडिफाइड" और "पार्सररोर" हैं। यह एक अजाक्स इवेंट है

उदाहरण के लिए:

 $.ajax({
   type: "GET",
   url: "keepalive.php",
   success: function(msg){
     alert("Connection active!")
   },
   error: function(XMLHttpRequest, textStatus, errorThrown) {
       if(textStatus == 'timeout') {
           alert('Connection seems dead!');
       }
   }
 });

9

जैसा कि ओलीजे ने कहा, navigator.onLineब्राउज़र संपत्ति का उपयोग करना नेटवर्क अनुरोध भेजने की तुलना में बेहतर है और तदनुसार, डेवलपर. mozilla.org/En/Online_and_offline_events के साथ , यह फ़ायरफ़ॉक्स और IE के पुराने संस्करणों द्वारा भी समर्थित है।

हाल ही में, WHATWG ने बदलावों पर प्रतिक्रिया देने की आवश्यकता के मामले में onlineऔर offlineघटनाओं के अलावा को निर्दिष्ट किया है navigator.onLine

कृपया डैनियल सिलवीरा द्वारा पोस्ट किए गए लिंक पर भी ध्यान दें जो बताता है कि सर्वर के साथ सिंक करने के लिए उन सिग्नल / संपत्ति पर भरोसा करना हमेशा एक अच्छा विचार नहीं है।


अद्यतन: 2015 के रूप में यह सबसे ब्राउज़रों में काम करने लगता है, कैनीयूज़ चार्ट और लेख देखें
ओल्गा

8
window.navigator.onLine

वह है जो आप खोज रहे हैं, लेकिन कुछ चीजें यहां जोड़ने के लिए, सबसे पहले, यदि यह आपके ऐप पर कुछ है जिसे आप चेक करते रहना चाहते हैं (जैसे यह देखना है कि क्या उपयोगकर्ता अचानक ऑफ़लाइन हो जाता है, जो इस मामले में सबसे अधिक बार सही होता है, तो आप परिवर्तन को भी सुनने की जरूरत है), इसके लिए आप किसी भी परिवर्तन का पता लगाने के लिए विंडो में ईवेंट श्रोता को जोड़ते हैं, यह जांचने के लिए कि क्या उपयोगकर्ता ऑफ़लाइन है, आप कर सकते हैं:

window.addEventListener("offline", 
  ()=> console.log("No Internet")
);

और ऑनलाइन जाँच के लिए:

window.addEventListener("online", 
  ()=> console.log("Connected Internet")
);

2
आपको सावधान रहना होगा onLine। ब्राउज़र बहुत अलग तरीके से ऑनलाइन होने की स्थिति को परिभाषित करते हैं। Developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine पर एक नज़र डालें ।
एंड्रियास बॉमगार्ट

1
आपका उत्तर गलत है। 'OnLine' की संपत्ति का इंटरनेट की शालीनता से कोई लेना-देना नहीं है। वेब एपीआई के बारे में उपरोक्त संदर्भ देखें।
अलेक्जेंड्रे वी।

7

मुझे एक ग्राहक के लिए एक वेब ऐप (ajax आधारित) बनाना था जो स्कूलों के साथ बहुत काम करता है, इन स्कूलों में अक्सर एक खराब इंटरनेट कनेक्शन होता है मैं इस सरल फ़ंक्शन का उपयोग यह पता लगाने के लिए करता हूं कि क्या कोई कनेक्शन है, बहुत अच्छी तरह से काम करता है!

मैं CodeIgniter और Jquery का उपयोग करता हूं:

function checkOnline() {
    setTimeout("doOnlineCheck()", 20000);
}

function doOnlineCheck() {
    //if the server can be reached it returns 1, other wise it times out
    var submitURL = $("#base_path").val() + "index.php/menu/online";

    $.ajax({
        url : submitURL,
        type : "post",
        dataType : "msg",
        timeout : 5000,
        success : function(msg) {
            if(msg==1) {
                $("#online").addClass("online");
                $("#online").removeClass("offline");
            } else {
                $("#online").addClass("offline");
                $("#online").removeClass("online");
            }
            checkOnline();
        },
        error : function() {
            $("#online").addClass("offline");
            $("#online").removeClass("online");
            checkOnline();
        }
    });
}

6

यदि आप ऑफ़लाइन हैं, तो यह पता लगाने के लिए आपके डोमेन के लिए अजाक्स कॉल सबसे आसान तरीका है

$.ajax({
      type: "HEAD",
      url: document.location.pathname + "?param=" + new Date(),
      error: function() { return false; },
      success: function() { return true; }
   });

यह आपको केवल अवधारणा देने के लिए है, इसमें सुधार किया जाना चाहिए।

उदा। त्रुटि = 404 का अभी भी मतलब होना चाहिए कि आप ऑनलाइन हैं


4

मुझे लगता है कि यह बहुत सरल तरीका है।

var x = confirm("Are you sure you want to submit?");
if (x) {
  if (navigator.onLine == true) {
    return true;
  }
  alert('Internet connection is lost');
  return false;
}
return false;

onLine का मतलब यह नहीं है कि इंटरनेट कनेक्शन है। Developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine के अनुसारif the browser is not able to connect to a local area network (LAN) or a router, it is offline; all other conditions return true
शमूएल कमेंस्की

2

मैं एक क्लाइंट-साइड समाधान की तलाश कर रहा था ताकि यह पता लगाया जा सके कि इंटरनेट डाउन था या मेरा सर्वर डाउन था। मुझे जो अन्य समाधान मिले वे हमेशा एक 3 पार्टी स्क्रिप्ट फ़ाइल या छवि पर निर्भर प्रतीत होते थे, जो मुझे ऐसा नहीं लगता था कि यह समय की कसौटी पर खरा उतरेगा। एक बाहरी होस्टेड स्क्रिप्ट या छवि भविष्य में बदल सकती है और डिटेक्शन कोड को विफल कर सकती है।

मुझे 404 कोड वाले xhrStatus की तलाश करके इसका पता लगाने का एक तरीका मिल गया है। इसके अलावा, मैं JSONP का उपयोग CORS प्रतिबंध को बायपास करने के लिए करता हूं। 404 के अलावा एक स्थिति कोड दिखाता है कि इंटरनेट कनेक्शन काम नहीं कर रहा है।

$.ajax({
    url:      'https://www.bing.com/aJyfYidjSlA' + new Date().getTime() + '.html',
    dataType: 'jsonp',
    timeout:  5000,

    error: function(xhr) {
        if (xhr.status == 404) {
            //internet connection working
        }
        else {
            //internet is down (xhr.status == 0)
        }
    }
});

2
यह 10-5-2016 तक काम नहीं करता है, यह सुनिश्चित नहीं है कि सिर्फ अन्य लोगों का समय बर्बाद क्यों नहीं होना चाहिए।
ब्रेन

मुझे नहीं लगता कि यह निषिद्ध और खराब अनुरोध त्रुटियों के लिए काम करेगा :)
फ़ैसल नसीर

1

मरे तरीके।

<!-- the file named "tt.jpg" should exist in the same directory -->

<script>
function testConnection(callBack)
{
    document.getElementsByTagName('body')[0].innerHTML +=
        '<img id="testImage" style="display: none;" ' +
        'src="tt.jpg?' + Math.random() + '" ' +
        'onerror="testConnectionCallback(false);" ' +
        'onload="testConnectionCallback(true);">';

    testConnectionCallback = function(result){
        callBack(result);

        var element = document.getElementById('testImage');
        element.parentNode.removeChild(element);
    }    
}
</script>

<!-- usage example -->

<script>
function myCallBack(result)
{
    alert(result);
}
</script>

<a href=# onclick=testConnection(myCallBack);>Am I online?</a>

1

जैसे कुछ तरीकों की समस्या navigator.onLineयह है कि वे कुछ ब्राउज़रों और मोबाइल संस्करण के साथ संगत नहीं हो रहा है, एक विकल्प है कि मुझे मदद की एक बहुत क्लासिक का उपयोग किया गया XMLHttpRequestविधि है और यह भी संभव मामले पूर्वानुमान है कि फाइल प्रतिक्रिया के साथ कैश में जमा हो गया था XMLHttpRequest.statusसे अधिक है 200 और 304 से कम है।

यहाँ मेरा कोड है:

 var xhr = new XMLHttpRequest();
 //index.php is in my web
 xhr.open('HEAD', 'index.php', true);
 xhr.send();

 xhr.addEventListener("readystatechange", processRequest, false);

 function processRequest(e) {
     if (xhr.readyState == 4) {
         //If you use a cache storage manager (service worker), it is likely that the
         //index.php file will be available even without internet, so do the following validation
         if (xhr.status >= 200 && xhr.status < 304) {
             console.log('On line!');
         } else {
             console.log('Offline :(');
         }
     }
}

0

दो अलग-अलग सीनियर्स के लिए 2 उत्तर हैं: -

  1. यदि आप एक वेबसाइट पर जावास्क्रिप्ट का उपयोग कर रहे हैं (यानी, या किसी भी फ्रंट-एंड भाग) यह करने का सबसे सरल तरीका है:

    <h2>The Navigator Object</h2>
    
    <p>The onLine property returns true if the browser is online:</p>
    
    <p id="demo"></p>
    
    <script>
      document.getElementById("demo").innerHTML = "navigator.onLine is " + navigator.onLine;
    </script>

  2. लेकिन अगर आप सर्वर साइड (यानी; नोड आदि) पर js का उपयोग कर रहे हैं, तो आप यह निर्धारित कर सकते हैं कि असफल XHR अनुरोध करने से कनेक्शन खो गया है।

    मानक दृष्टिकोण कुछ बार अनुरोध को पुनः प्राप्त करने के लिए है। यदि यह नहीं गुजरता है, तो उपयोगकर्ता को कनेक्शन की जांच करने के लिए सतर्क करें, और इनायत से विफल रहें।


0

अनुरोध त्रुटि में सिर

$.ajax({
    url: /your_url,
    type: "POST or GET",
    data: your_data,
    success: function(result){
      //do stuff
    },
    error: function(xhr, status, error) {

      //detect if user is online and avoid the use of async
        $.ajax({
            type: "HEAD",
            url: document.location.pathname,
            error: function() { 
              //user is offline, do stuff
              console.log("you are offline"); 
              }
         });
    }   
});

-1

यहाँ मेरे पास एक सहायक उपयोगिता का एक टुकड़ा है। यह जावास्क्रिप्ट नाम दिया गया है:

network: function() {
    var state = navigator.onLine ? "online" : "offline";
    return state;
}

आपको इसे विधि का पता लगाने के साथ प्रयोग करना चाहिए और ऐसा करने के एक 'वैकल्पिक' तरीके को बंद करना चाहिए। समय तेजी से आ रहा है जब यह वह सब होगा जिसकी आवश्यकता है। अन्य तरीके हैक हैं।

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