【问题标题】:Create an <iframe> element and append html content to it with jQuery创建一个 <iframe> 元素并使用 jQuery 将 html 内容附加到它
【发布时间】:2010-11-07 22:10:34
【问题描述】:

是否可以使用 jQuery 创建一个 &lt;iframe&gt; 元素并将 html 内容附加到它而不指定 src 属性?

问题是我需要创建一个iframe 并且我已经有了它的内容(我得到它作为 AJAX 响应)。不幸的是,我无法将获得响应的 URL 指定为 src 属性。我想做类似的事情:

$('<iframe id="someId"/>').append(response).appendTo("#someDiv");

【问题讨论】:

    标签: jquery iframe


    【解决方案1】:

    试试这个:

    $('<iframe id="someId"/>').appendTo('#someDiv')
                              .contents().find('body').append(response);
    

    【讨论】:

    • 你能在将内容附加到 dom 之前将其添加到 iframe 吗?因为那将是惊人的。如果可以的话,有一百万个赞:)
    【解决方案2】:

    那为什么要使用 iframe 呢?把它全部粘在另一个容器里。除了可以从 src 属性加载页面之外,我想不出 iframe 的任何优势。

    我想如果你需要一个 iframe 用于其他目的,比如你在页面中加载但你想用 ajax 响应替换它,你可以使用 jQuery 将 iframe 换成 div 并根据需要再次返回。

    另一种可能性是修改 ajax php 脚本以在 iframe 中输出所需的完整页面,而不是 ajax。然后使用 jQuery 在 iframe 中使用新参数更改请求页面的地址,以显示更新的内容。

    【讨论】:

    • 我发现了一个有用的案例。我的用户想要一种方法来打印高度动态页面的特定部分的内容。起初,我打开一个新窗口并将我的内容传送到该窗口,但弹出窗口很俗气。因此,我使用了一个空的 iframe,将内容传输到该 iframe,然后在 iframe 上调用 window.print:window.frames['someId'].print();
    • 这是另一种情况:iframe 用于覆盖 IE 中的 ActiveX 控件,否则它们位于任何其他元素之上。但如果有某种自定义访问控制,唯一的办法就是按照正确答案中的过程进行操作。
    • 如果您想报告 AJAX 错误,并且错误以 HTML 页面的形式返回,将整个错误响应粘贴在 iframe 中是最简单的(也可能是最好的)。
    • 在不影响主文档的情况下,每个 css 的样式更容易
    • 我发现在创建具有自己的 和
    【解决方案3】:

    接受的答案对我不起作用,但以下解决方案有效:

    $('<iframe>', {
        id: 'someId',
        // other options like
        frameborder: 0,
        scrolling: 'no'
    }).appendTo('#someDiv').on('load', function () {
        $(this).contents().find('body').append(response);
    });
    

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      • 2014-08-09
      • 2012-03-20
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      相关资源
      最近更新 更多