使用jQuery从Iframe中检索html

时间:2016-08-03 12:37:14

标签: javascript php jquery html iframe

我已经搜索了其他问题,并尝试了这些建议,但答案似乎并没有按照我的要求运作。

我正在从数据库表中检索电子邮件,并在iframe中显示电子邮件的正文。然后我需要在javascript文件中获取电子邮件正文的html。

我尝试过的代码:

var body = $('#email-body').contents().find('html').html();

RETURNS: <head></head><body></body>

var body = '<?php echo $email->body;?>';

RETURNS: Invalid or unexpected token
(most likely due to the linebreaks the HTML has within it.)

似乎第一个选项应该有效,但它并没有按要求提取全部内容。

- 编辑 -

根据评论,我尝试了以下内容:

var iframe = document.getElementById('email-body');
var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
var body;
if (iframeDocument) {
    body = iframeDocument.documentElement.outerHTML;
}

RETURNS: <html><head></head><body></body></html>

- 编辑2 -

iframe填充如下:

<iframe id="email-body" src="/api/emails/email/{{{ $email->id }}}/body" onload="resizeIframe(this)"></iframe>

我正在测试的电子邮件:

<!DOCTYPE html>
<html lang="en-US">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <h2>Testing</h2>
        <div>And again.</div>
    </body>
</html>

1 个答案:

答案 0 :(得分:0)

加载iframe后需要运行脚本以获取正确的数据。

var body = '';
$('iframe').on('load', function() {
    body = $('#email-body').contents().find('html').html();
});