我正在尝试在加载内容后调整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>
然后在.ajax成功函数之前调用resizeIframe(意味着dom不包含那些添加元素,因此页面的高度错误。我想避免向每个ajax添加resizeIframe
我打电话,是否有可以用来解决这个问题的事件?
更新
我试过这个:
$(document).ready(function(){
resizeIframe();
$(document).load(function(){ resizeIframe();});
$(document).ajaxComplete(function(){
setTimeout(resizeIframe, 0);
});
});
它似乎在Firefox 21中工作。但是,它在IE10中不起作用(我必须向后兼容IE8)。
答案 0 :(得分:2)
本地活动将始终在全球活动之前执行(本地成功 - &gt;全球成功 - &gt;本地完成 - &gt;全局完成)。您可以设置全局success
事件:
$(document).ajaxSuccess("resizeIframe");
API参考:http://api.jquery.com/ajaxSuccess/
然后指定本地complete
事件:
url: 'someurl.php',
complete: function(data)
{
$("body").append(data);
}
请注意,只要AJAX调用完成,就会运行complete函数。