【问题标题】:Retrieving html from Iframe using jQuery使用 jQuery 从 iframe 中检索 html
【发布时间】:2016-08-03 12:37:14
【问题描述】:

我搜索了其他问题并尝试了建议,但答案似乎没有按我的要求工作。

我正在从数据库表中检索电子邮件并在 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.)

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

--编辑--

根据 cmets,我尝试了以下操作:

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>

【问题讨论】:

  • 如果你删除 .find('html') 会发生什么...所以 var body = $('#email-body').contents().html(); 甚至将 'html' 更改为 'body' ... 所以 var body = $('#email-body')。内容().find('body').html();
  • @JaromandaX 这将返回以下内容:Uncaught TypeError: Cannot read property 'createDocumentFragment' of null OR using body instead return nothing.
  • 你试过非jquery链接吗?哎呀,刚刚看到编辑
  • 编辑了我的原始帖子以展示我对此的尝试。

标签: javascript php jquery html iframe


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2013-04-12
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多