我误以为我不能同时拥有一个正在运行的脚本更新屏幕,还有一个未完成的提交会在完成时重新加载页面。
你可以做到这一点,我有。我这样做的方式是将我的更新程序放在startTimeout上并让提交继续。
$('#JQF').on('submit', function(){
start();
return true;
});
...
start:
function (xhr, s) {
$(".appMainMsg").hide();
bar = document.getElementById("ProgressBar");
if (bar)
{
eta = document.getElementById("ProgressBarEta");
startTime = new Date();
infoUpdated = 0;
infoRequested = 0;
$(bar).empty().progressbar();
setTimeout(requestInfo, 2);
}
},
...
原题:
我有一个页面,帖子与上传文件的格式,并针对一个隐藏的iframe的响应。当iframe加载完成后,它会调用(main)页面中的函数。如果一切看起来都不错,我想将加载到iframe中的body的内容移动到主页的body中,否则我会把事情放在一边。我有jquery加载,所以我想使用它。
<body>
<iframe name='ifr' id='ifr' style='display: none;'></iframe>
<form target='ifr' method='post' action='mypage.php'>
</form>
<script>
function finished()
{ if (iLikeIt)
{
//replace body contents with ifr.body.contents
// keeping all event handlers attached
// something like...
WHAT DO I PUT HERE?
}
}
</script>
</body>
加载到的iframe页面,结束与:
<script>
setTimeout(parent.finished, 1000); // some time for navel gazing
</script>
你为什么不使用AJAX加载内容?它是异步的,因此当数据发回时,它会触发回调。它确实不会保留任何绑定,你必须重新调用它们。 – 2012-08-05 06:24:44
Ajax是一个更好的选择,除非你有要在IE6中工作的文件输入。 – 2012-08-05 06:34:08
“它确实不会保留任何绑定,您必须重新调用它们......”除非事件处理首先被委托给'document'。 – 2012-08-05 06:52:04