检测到iFrame已加载后或3秒超时后调用函数

时间:2019-07-31 13:34:46

标签: javascript iframe settimeout

我想在网页上的隐藏iframe中加载外部URL。一旦外部URL完成加载,我就需要检测,然后调用我的函数MyFunct()。如果外部URL的加载时间超过3秒,则需要超时并调用MyFunct()

以下代码是否会在iframe加载后或由于超时3秒后调用我的函数MyFunct()?

var iframe = document.getElementById('MyFrame');
iframe.src = "SomeRandonUrl";

iframe.onload = function () {
   setTimeout(MyFunct, 3000);
}

1 个答案:

答案 0 :(得分:1)

您应该检查它是否已加载超时事件,如下所示。

var iframe = document.getElementById('MyFrame');
iframe.src = "SomeRandonUrl";

iframe.onload = function () {
    if (iframe.src !== "about:blank")
        iframe.loaded = true; // set that it has loaded if not about:blank
}

setTimeout(function() {
    if (!iframe.loaded) { // if undefined or false valued
        alert('Timedout');
        // and then you can cancel it's loading setting another src for e.g
    }
}, 3000);