2013-11-21 50 views
1

的iframe:如果沒有互聯網連接,隱藏的iframe

<iframe id="iframe" title="Environment Canada Weather" src="" allowtransparency="false" frameborder="0" height="170"></iframe> 

的jQuery:

$(document).ready(function() { 
    window.setInterval(function(){ 
     if (navigator.onLine) { 
      //$("#iframe").show(); 
      $("#iframe").attr("src", "http://weather.gc.ca/wxlink/wxlink.html?cityCode=on-143&amp;lang=e"); 
     } 
     else{ 
      $("#iframe").hide(); 
     } 
    }, 5000); 
}); 

我無法隱藏的iframe,如果沒有互聯網連接。我不知道這裏有什麼問題。 謝謝。

+1

可能重複[一勞永逸,navigator.onLine做什麼?](http://stackoverflow.com/questions/13076383/once-and-for-all-what-does-navigator-online-do ) –

+0

找出你是否在線的一種方法:http://stackoverflow.com/questions/2384167/check-if-internet-connection-exists-with-javascript – reto

+0

它適用於我.. http:// jsfiddle。 net/2ryhL/ – zzlalani

回答

1

navigator.onLine告訴你瀏覽器是否處於「脫機」模式。

它實際上並不檢查您是否可以觸及網絡,正如您可能認爲的那樣。

(要做到這一點,你可以嘗試ping Google.com與阿賈克斯,或做一些類似的伎倆)

+0

有什麼方法可以在客戶端進行檢查。如果沒有互聯網連接,我不想在iframe中顯示錯誤消息。 – user3018980

+0

@ user3018980是的,請執行您目前的操作,但請記住navigator.onLine的值僅在請求遠程頁面或導航到新頁面後纔會更新。 –

+1

「在Chrome和Safari瀏覽器中,如果瀏覽器無法連接到局域網(LAN)或路由器,則它處於脫機狀態;其他所有條件都會返回true;在Firefox和Internet Explorer中,將瀏覽器切換爲脫機模式一個錯誤的價值;所有其他條件返回一個真正的價值。「 https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine.onLine – showdev

0

你可以做type:'jsonp'timeout:3000(這是三秒)一個Ajax請求到同一頁你想通過框架包括。

$.ajax({ 
    type : "GET", 
    url : "http://weather.gc.ca/wxlink/wxlink.html?cityCode=on-143&amp;lang=e", 
    timeout : 3000, 
    dataType : "jsonp", 
    crossDomain : true, 
    success : function (response, textS, xhr) { 
     // never get here 
    }, 
    error : function (xmlHttpRequest, textStatus, errorThrown) { 
     if (textStatus === 'timeout') { 
      // not reachable 
     } else { 
      // reachable 
     } 
    } 
}); 

但是,由於該頁面的內容不是腳本,因此總是會出現語法錯誤。但瀏覽器通常能夠在發生此類錯誤後進行恢復。 UPD。只是嘗試與您的網址,它的作品。

相關問題