2014-05-12 119 views
0

我有一個跨瀏覽器在線/離線測試的網頁設計爲在多個瀏覽器上工作。 它的工作原理與自由指標:iOS 7.1.1 Safari瀏覽器搞亂在線/離線狀態

  • 事件監聽器窗口document.body的
  • 事件偵聽器的navigator.onLine變量
  • 輪詢

http://jsfiddle.net/3mMfG/

window.addEventListener("online", function() { 
    document.getElementById('test1').innerHTML = "online"; 
}, false); 

window.addEventListener("offline", function() { 
    document.getElementById('test1').innerHTML = "OFFLINE"; 
}, false); 


document.body.ononline = function() { 
    document.getElementById('test2').innerHTML = "online"; 
}; 
document.body.onoffline = function() { 
    document.getElementById('test2').innerHTML = "OFFLINE"; 
}; 


setInterval(function() { 
    if (navigator && navigator.onLine) 
     document.getElementById('test3').innerHTML = "online"; 
    else 
     document.getElementById('test3').innerHTML = "OFFLINE"; 
}, 500); 

我在多個iOS,Android或Windows上使用這段代碼筆記本電腦瀏覽器成功。

在特定的iOS 7.1.1設備上不起作用。我已經在其他iOS 7.1.1設備上成功測試過它,但在這個特定的設備上,當它變成離線狀態時,幾秒鐘後(〜5),所有指示器都會回到「在線」狀態。

我已經在多個設備上測試過,但只能在這個特定的設備上重現問題。我使用「飛行保存模式」按鈕將其關閉,不允許使用WiFi和藍牙,但幾秒鐘後,在瀏覽器中觸發在線事件,navigator.onLine變量變爲真...奇怪...

如果您對發生的事情有任何線索,我會很樂意與您交流。

請,如果你測試與設備的頁面,不要猶豫,留言,讓我知道,如果它設備上。由於

回答

1

在iOS設置應用重置網絡設置糾正這種行爲......

0

對我來說是iPhone上的8加模擬器iOSv11給錯誤。我必須打開「允許HTTP服務」位於如下所示爲了獲得navigator.onLine返回true -

在設置 - >開發人員 - >「允許HTTP服務」