我发生了一个非常奇怪的情况。我会尽我所能来解释发生了什么。
我有一个包含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相同的方式显示内容。
答案 0 :(得分:0)
出于某种原因,.show()
对Firefox不起作用。
使用此代码显示div:
$("#reportPreviewDiv").css('display', 'block');