2013-01-11 10 views
18

मुझे नेविगेटर.ऑनलाइन संपत्ति के साथ कोई समस्या है।नेविगेटर.ऑनलाइन हमेशा काम नहीं करते

मैं एक WAMP पर चल रहे स्थानीय कियोस्क से एक साधारण वेबसाइट चला रहा हूं।

मेरे लैपटॉप पर जब मैं इसका परीक्षण करता हूं तो यह काम करता है। मैं वाईफाई बंद करता हूं और अलर्ट बॉक्स दिखाता है। WAMP सॉफ़्टवेयर चलाने वाले कियोस्क पर इंटरनेट को डिस्कनेक्ट करने से झूठी स्थिति उत्पन्न नहीं होती है। कोई विचार क्यों?

var online = navigator.onLine; 

if (online == false) { 

    alert("Sorry, we currently do not have Internet access."); 
    location.reload(); 

} 

उत्तर

35

MDN के बारे में navigator.onLine:

In Chrome and Safari, 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. So while you can assume that the browser is offline when it returns a false value, you cannot assume that a true value necessarily means that the browser can access the internet.

के रूप में ऊपर वर्णित है, इस संपत्ति trustable नहीं है, इसलिए, मेरी राय में, सबसे अच्छा समाधान का एक सर्वर साइड पृष्ठ पर एक ajax कॉल है। यदि ब्राउज़र ऑफ़लाइन है, तो कनेक्शन विफल हो जाएगा और, इस प्रकार, onerror ईवेंट कहा जाएगा। अन्यथा, onload घटना कहा जाता है:

function isOnline(no,yes){ 
    var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHttp'); 
    xhr.onload = function(){ 
     if(yes instanceof Function){ 
      yes(); 
     } 
    } 
    xhr.onerror = function(){ 
     if(no instanceof Function){ 
      no(); 
     } 
    } 
    xhr.open("GET","anypage.php",true); 
    xhr.send(); 
} 

isOnline(
    function(){ 
     alert("Sorry, we currently do not have Internet access."); 
    }, 
    function(){ 
     alert("Succesfully connected!"); 
    } 
); 
+0

आपकी मदद के लिए धन्यवाद, यह मुझे सही दिशा में इंगित करता है। – Jako

+0

मामूली सुधार - आपके तर्कों में फ़ंक्शन ऑर्डर स्वैप किया गया है, 'फ़ंक्शन होना चाहिएऑनलाइन (हाँ, नहीं) {...} ' – Johan

+0

क्या होगा यदि मैं Google के सीडीएन से jQuery लोड करना चाहता हूं, और अनुरोध सफल होने पर jQuery कोड निष्पादित करना है? –

संबंधित मुद्दे