gpt4 book ai didi

javascript - 如何将 iframe 主体的内容移动到页面主体?

转载 作者:行者123 更新时间:2023-11-30 05:56:07 24 4
gpt4 key购买 nike

更新:

我被误导了,我犯了一些错误,认为我不能同时拥有更新屏幕的运行脚本和完成后重新加载页面的未完成提交。

你可以做到,我也做到了。我这样做的方法是将我的更新程序置于 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>

最佳答案

您不需要 iframe 来执行此操作。我建议通过 ajax 提交表单。
因为你已经加载了 jquery,对你来说最简单的选择是使用 jquery-form plugin .

这是您正在寻找的工作示例:

index.html:

<!doctype html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script>

$(function(){

// instead of redirecting to upload.php, your form "#form"
// will now be submitted by ajax and you'll get response
// content in html parameter of success callback
$('#form').ajaxForm({
// you can handle "json" or "xml" content types too
// @see http://jquery.malsup.com/form/#json
dataType: 'text',
success: function(html) {

// in case you want to replace your document
// content with the response content
$(document.body).html(html);
}
});



// This is how you "keep all event handlers attached", with
// live method instead of bind.
// So if you have #btn2 element in ajax response, and you replace
// document content with this ajax response, jquery will auto-bind
// 'click' event on new #btn2 element
// Note that you can also use bind, but you'll have to "re-bind"
// the event manualy (inside "success" callback in this case).
$("#btn2").live("click", function(){alert("button 2 clicked")});

});

</script>
</head>
<body>
<h1>ajax form:</h1>
<form id="form" action="upload.php" method="post">
<input type="file" name="file" />
<input type="submit" value="Submit File" />
</form>

<h1>keeping all event handlers attached exemple:</h1>
<button id="btn2">click me</button>
</body>
</html>

上传.php:

<?php

// here you handle your $_FILES, $_POST, $_GET ...


// html response example:
header('Content-Type: text/html; charset=utf-8');
echo '<h1>This is your ajax html response:</h1>';
echo '<button id="btn1">click me</button>';
var_dump($_FILES);
echo '<h1>keeping all event handlers attached exemple:</h1>';
echo '<button id="btn2">click me</button>';
echo '<script>

$(function(){

// js event handler attached to #btn1
$("#btn1").bind("click", function(){alert("button 1 clicked")});
});

</script>';

关于javascript - 如何将 iframe 主体的内容移动到页面主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11814406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com