【问题标题】:If iframe refresh failed, then X如果 iframe 刷新失败,则 X
【发布时间】:2012-12-10 09:36:12
【问题描述】:

我正在使用以下脚本每 60 秒刷新一次 <iframe>

<script type=text/javascript>
setInterval(function() {
    document.getElementById("tracker").src += "";
}, 60000);
</script>

如果刷新失败,我想显示一个不同的页面/&lt;iframe&gt;。例如,如果我没有连接到任何网络,那么显然任何页面刷新都会显示“找不到页面”错误。

相反,我想显示不同的&lt;iframe&gt;(例如tracker2)或不同的页面/消息/图像来表示“离线”。当然&lt;iframe&gt; 会不断刷新,直到有互联网连接。

我很确定这是不可能的,但我可能错了。有可能吗?

【问题讨论】:

    标签: javascript iframe if-statement refresh


    【解决方案1】:

    如果您正在加载的 &lt;iframe&gt; 位于不同的域中,那么不,这是不可能的。否则,您可以使用 Ajax 来检查状态:

    var rq = new XMLHttpRequest();
    
    rq.open('GET', document.getElementById('tracker').src, true);
    
    rq.onreadystatechange = function() {
        if(rq.readyState === 4) {
            if(rq.status === 200) {
                // All is well
            } else {
                // Show your backup element
            }
        }
    };
    
    rq.send(null);
    

    【讨论】:

    • @EliUnger:那么&lt;iframe&gt; 是干什么用的? Ajax 通常更好。
    • Minitech是对的,你只能检查加载iframe的返回值,
    • 我正在使用 Windows 7 小工具/小工具来跟踪客户的截止日期。有一个小部件 html 文件,里面有一个显示本地 PHP 页面的 iframe。它可以帮助我跟踪重要的日期。但是,如果我无法访问互联网,我会看到“找不到页面”错误。我希望看到“离线”消息,或者指向不同的 iframe(例如 tracker2)。我想知道,Ajax = Javascript 吗?也就是说,要使用上面的代码,我需要使用 标签吗?
    • @EliUnger:Ajax 只是一种使用 JavaScript 的方式,所以是的,它应该是你脚本的一部分,在 &lt;script&gt; 标签内。
    • 谢谢。所以我的 SetInterval 函数将转到 // All is well?
    【解决方案2】:

    您可以检查 iframe 的 http 代码,并根据该代码呈现另一个页面

    【讨论】:

    • 如何查看&lt;iframe&gt; 的状态码?代码总是很好。
    • 给我20分钟,我在火车上:D
    • 您可以在您回家后发布代码吗?我不太明白如何使用 onload 来检查加载 iframe 的失败或成功。
    【解决方案3】:

    您可以使用 Jquery ajax 来加载页面内容并检查页面状态。例如:

    <script type=text/javascript>
    
    setInterval(loadIframe, 60000);
    
    function loadIframe()
    {
    
    $.ajax({
        type: 'GET',
        url: 'document.getElementById('tracker').src',    
        success: function(data){
            alert('horray! 200 status code!');
            document.getElementById("tracker").src += "";
        },
        error: function(data){
            //get the status code
            if (code == 400) {
                alert('400 status code! user error');
            }
            if (code == 500) {
                alert('500 status code! server error');
            }
        },
    });
    }
    
    </script>
    

    【讨论】:

    • 这段 ajax 代码将与我的 iframe 刷新脚本一起放在哪里?
    猜你喜欢
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 2023-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多