创建一个 <iframe> 元素并使用 jQuery 将 html 内容附加到它

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4119979/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 16:42:27  来源:igfitidea点击:

Create an <iframe> element and append html content to it with jQuery

jqueryiframe

提问by Denny J.

Is it possible using jQuery to create an <iframe>element and append html content to it without having srcattribute specified?

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

The problem is I need to create an iframeand I already have its content (I get it as AJAX response). Unfortunately, I can't specify the URL I get response from as srcattribute. I'd like to do something like:

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

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

回答by user113716

Try this:

尝试这个:

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

回答by Surreal Dreams

Why use an iframe then? Stick it all in another container. I can't think of any advantage of the iframe except that you can load a page from a src attribute.

那为什么要使用 iframe 呢?将其全部放入另一个容器中。除了您可以从 src 属性加载页面之外,我想不出 iframe 的任何优势。

I suppose if you need an iframe for some other purpose, like you load in a page but you want to replace it with the ajax response, you could use jQuery to swap out the iframe for a div and back again as needed.

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

The other possibility is that instead of ajax, modify your ajax php script to output the full page that you want in the iframe. Then use jQuery to change up the address of the requested page in the iframe with new parameters to display updated content.

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

回答by Mehdi Dehghani

Accepted answer doesn't work for me, but following solution works:

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

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