我正在尝试在加载内容后调整 iframe 的大小。该页面(加载到 iframe 中)具有一些控件,可以使其将附加信息加载到页面底部,并且它通过 JQuery 的 $.ajax() 方法执行此操作。
我尝试过使用$(document).ajaxComplete()
,但最终在 $.ajax() 方法成功事件之前注册。我想要做的是在成功事件之后注册一个事件。
例如:
<script type='text/javascript'>
$(document).ready(function(){
resizeIframe();
$(document).ajaxComplete("resizeIframe");
$(document).load("resizeIframe");
});
function resizeIframe()
{
$(window).parent().height($("body").height());
$(window).scrollTop(0);
}
</script>
这适用于静态加载的页面。但是,如果我有这样的事情:
<script type='text/javascript'>
$("someObject").on('click', function (){
$.ajax({
type: 'post',
url: 'someurl.php',
success: function(data)
{
$("body").append(data);
}
});
});
</script>
然后 resizeIframe 在 .ajax 成功函数之前被调用(这意味着 dom 不包含那些添加元素,因此页面的高度错误。我想避免添加resizeIframe
到我所做的每个 ajax 调用中,是否有事件我可以用它来解决这个问题吗?
更新
我试过这个:
$(document).ready(function(){
resizeIframe();
$(document).load(function(){ resizeIframe();});
$(document).ajaxComplete(function(){
setTimeout(resizeIframe, 0);
});
});
它似乎在 Firefox 21 中工作。但是,它在 IE10 中不起作用(我必须向后兼容 IE8)。