【发布时间】: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 秒时,它无法以与功能一相同的方式显示内容。
【问题讨论】: