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

标签 javascript jquery iframe

更新:

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

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

相关文章:

javascript - UTF-8 到 UTF-16LE Javascript

javascript - 如何防止在 php JS 中重新加载 div 中的 scrollHeight?

javascript - d3.js 结合了两种具有相同属性的不同类型的 json 文件

javascript - 图片上传按钮div

javascript - 放大弹出窗口 : load whole html page into a popup

jquery - 使悬停起作用或捕获 iframe 滚动条上的鼠标输入事件?

javascript - 按父级 knockout HTML 表格组

php/javascript/ajax 提交表单 > 将数据保存到数据库 > 更新网站上的数据

javascript - 如何将 jquery masonry 与可嵌入推文 (iframe) 结合使用

php - 单击按钮时转到下一页并刷新上一页 Jquery Mobile