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

Posted

技术标签:

【中文标题】Firefox 不在 jquery .load() 上显示 iFrame 内容【英文标题】:Firefox not displaying iFrame contents on jquery .load() 【发布时间】:2015-02-27 02:51:52 【问题描述】:

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

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

main.cshtml:

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

部分视图.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 被加载后,其他一些功能才会发生。

Function One 适用于 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 秒时,它无法以与功能一相同的方式显示内容。

【问题讨论】:

【参考方案1】:

由于某种原因,.show() 并非始终适用于 Firefox。

使用此代码显示 div:

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

【讨论】:

以上是关于Firefox 不在 jquery .load() 上显示 iFrame 内容的主要内容,如果未能解决你的问题,请参考以下文章

Jquery load() 仅在 Firefox 中工作?

jquery load() 方法 语法

jQuery:代码在 Firefox 中有效,但在 IE 中无效

jQuery UI 对话框 - 使用 Firefox 时出现问题

Jquery的load加载本地文件出现跨域错误的解决方案

使用 jQuery AJAX 检索数据而不在 php 中重新加载页面