有没有办法检测iframe何时开始加载未完成?

时间:2017-03-21 06:26:58

标签: jquery html iframe

我知道可以使用jQuery检测load事件:

$('#iframeid').load(function(){
    alert('frame has (re)loaded');
});

是否可以检测何时开始在不同来源上加载而不是完成加载?

1 个答案:

答案 0 :(得分:0)

您可以使用MutationObserver https://msdn.microsoft.com/en-us/library/dn254985(v=vs.85).aspx。但只有较新版本的浏览器才支持此功能,您可以在此处找到完整列表http://caniuse.com/#feat=mutationobserver

用法:

<iframe id="iframe"></iframe>

var iframe = $("body").find("#iframe");
var observerConfig = {
    attributes: true,
    childList: true,
    characterData: true
};
var iframeObserver = new MutationObserver(function (mutations) {

    mutations.forEach(function (mutation) {
             if (mutation.attributeName == "src"){
            // your code
       }
    });
});

iframeObserver.observe(iframe[0], observerConfig);
// later, you can stop observing
//observer.disconnect();

setTimeout(function () {
    iframe.attr("src", "test");
}, 2000);

这是完整的小提琴 https://jsfiddle.net/jrmbzdp9/2/