iframe在IE 8中未正确加载

时间:2016-05-25 09:22:13

标签: jquery iframe internet-explorer-8 ie8-compatibility-mode

我通过给它一个src创建一个带有jquery的iframe,但它在IE8中不起作用。

$("#DB_window").append("<iframe frameborder='0' hspace='0' style='width:100%;height:100%;' src='"+urlNoQuery[0]+"' id='DB_iframeContent' name='DB_iframeContent"+Math.round(Math.random()*1000)+"' onload='db_showIframe()'> </iframe>");

它发出请求,但请求被中止,所以我更改了它并尝试使用ajax

访问它
$("#DB_window").append("<iframe frameborder='0' hspace='0' style='width:100%;height:100%;' data-src='"+urlNoQuery[0]+"' id='DB_iframeContent' name='DB_iframeContent"+Math.round(Math.random()*1000)+"' onload='db_showIframe()'> </iframe>");

进行ajax调用以获取内容

var iframe = $("#DB_window").children('iframe');
        $.ajax({
            url: iframe.data("src"),
//            dataType : "text/html",
            success: function(content) {
                iframe.html(content);
            }
        });

但是在IE8中它只请求"src" url并且不会对页面中的css和js引用进行请求。因此iframe没有正确呈现,它只带有数据,因此没有样式。我们如何在IE中请求iframe。

1 个答案:

答案 0 :(得分:1)

iframe请求在第一种情况下在IE中被中止。所以当我尝试在关闭之前修改DOM元素时,我开始知道IE会这样做。这意味着如果您尝试将子元素附加到另一个元素并且其他元素(如document.body)仍在加载,则会出现此错误。如果您使用.appendChild等,则会发生这种情况。 所以我使用了setTimeout,它对我有用。

setTimeout(function(){
$("#DB_window").append(...
},2000);