【发布时间】:2012-08-05 06:17:50
【问题描述】:
更新:
由于我犯的一些错误,我被误导了,以为我不能同时拥有更新屏幕的正在运行的脚本和完成后会重新加载页面的未完成提交。
你可以做到,我做到了。我这样做的方法是将我的更新程序放在 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 完成加载时,它会调用(主)页面中的一个函数。如果一切看起来都不错,我想将加载到 iframe 中的正文内容移动到主页的正文中,否则我就不管了。我确实加载了 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 加载内容?它是异步的,所以当发回的数据准备好时它会触发回调。它确实不会保留您必须重新调用它们的任何绑定。
-
Ajax 是一个更好的选择,除非你当然有想要在 IE6 中工作的文件输入。
-
“它确实不会保留任何你必须重新调用它们的绑定”......除非事件处理首先被委托给
document。 -
是的,有文件上传。我知道我必须手动重新连接事件处理程序吗?
标签: javascript jquery iframe