Firefox不在jquery .load()上显示iFrame内容

时间:2014-12-30 23:13:51

标签: jquery firefox iframe

我发生了一个非常奇怪的情况。我会尽我所能来解释发生了什么。

我有一个包含iFrame的局部视图。所以在我的主页面上,我进行了ajax调用以获取局部视图。

main.cshtml:

<div id='reportPreviewDiv'></div>

partialview.cshtml:

<iframe id="testIFrame">
    This content is built with https://github.com/ilich/MvcReportViewer/
</iframe>

main.js:

$.ajax({
    url: reportUrl,
    data: { reportParameters: parameters },
    method: 'POST',
    success: function (data) {
        $("#reportPreviewDiv").html(data);

        // Function One
        $("#testIFrame").load(function () {
            // Do some extra stuff
            $("#reportPreviewDiv").show();
        });

        // Function Two
        $("#testIFrame").load(function () {
            // Do some extra stuff
        });
        $("#reportPreviewDiv").show();
    }
});

目标是等到iFrame加载之后再进行其他功能。

功能一适用于IE和Chrome(应该如下所示:http://i.imgur.com/5PW6ZeR.png),但在Firefox中看起来像这样(http://i.imgur.com/sOtz6Kb.png)。

如果我把

$("#reportPreviewDiv").show();

在函数二中的.load()之外,它适用于Firefox,但在Chrome和IE上略有延迟(如在完成.load()中的功能之前显示reportPreviewDiv。

另一件有趣的事情是我包裹了

$("#reportPreviewDiv").show();
在.load()之外的setTimeout中

,当我将超时设置为超过1.5秒时,它无法以与Function One相同的方式显示内容。

1 个答案:

答案 0 :(得分:0)

出于某种原因,.show()对Firefox不起作用。

使用此代码显示div:

$("#reportPreviewDiv").css('display', 'block');