如果没有互联网连接,请隐藏iframe

时间:2013-11-21 20:50:26

标签: javascript jquery 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。我不知道这里有什么问题。 感谢。

2 个答案:

答案 0 :(得分:1)

navigator.onLine会告诉您浏览器是否处于“离线”模式。

实际上并没有像你想象的那样检查你是否可以上网。

(要做到这一点,你可以尝试使用ajax ping Google.com,或者做一些类似的技巧)

答案 1 :(得分:0)

您可以使用type:'jsonp'timeout:3000(即3秒)向您希望通过框架添加的同一页面执行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。只是尝试使用你的网址,它可以工作。