我正在使用邮箱,我从HTTP请求中收到一封邮件,并尝试将其显示在iframe中,因为它可以是纯文本或HTML电子邮件。
显示内容没有问题,但是我无法调整该内容的高度。我总是从contentWindow.document.body.scrollHeight
得到0。
我试图查看邮件是否来自纯文本,但是对于html电子邮件却是一样。
我知道显示的内容是因为我手动编辑了页面以更改高度并显示内容。现在唯一的问题是该高度的自动调整。
顺便说一下,iframe.contentWindow.document.body
是[Object HTMLBodyElement]
$scope.iFrameDisplayMail = function (Mail_content) {
var iframe = document.getElementById('mail-display');
if (Mail_content.html != null) {
iframe.contentWindow.document.write(Mail_content.html);
} else {
iframe.contentWindow.document.write(Mail_content.plain);
}
iframe.style.width = 'auto';
alert(iframe.contentWindow.document.body.scrollHeight);
iframe.style.height = iframe.contentWindow.document.body.scrollHeight + 'px';
iframe.contentWindow.document.close();
}
控制台中没有与此相关的错误。
答案 0 :(得分:0)
根据您的示例,您可以使用:
var iframe = document.getElementById('mail-display');
var scrollHeight = iframe.ownerDocument.body.scrollHeight;
答案 1 :(得分:0)
我也遇到了这个问题,并在研究如何修复它时发现了这个问题。以防它可能对其他人有所帮助,这是我让它工作的方法:
TLDR:尝试在您希望在 iFrame 中显示的电子邮件的 HTML 内容中添加一个空的 <style></style>
标签(如果没有)。
我使用 iFrame.contentWindow.document.write("Html-Content-From-Received-Email"
为 iFrame 设置了 HTML 内容。至于您,此内容会显示(如果我在故障排除时手动更改高度),但 iFrame.contentWindow.document.body.scrollHeight
返回 0,因此我无法以编程方式正确设置高度。
我发现这个问题只发生在没有 <style></style>
标签的 HTML 内容上——这在电子邮件中很常见,例如。从雷鸟发送。当我向收到的电子邮件内容添加一个空的 <style></style>
标签(否则完全相同)时,返回了正确的 scrollHeight。因此,例如,此电子邮件内容将不起作用 (scrollHeight=0):
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Das ist ein Test.</p>
<p>Das ist ein Test.</p>
<p>Das ist ein Test.</p>
</body>
</html>
但是当我添加 <style></style>
标签时,它会正常工作并且会返回正确的 scrollHeight:
<html>
<head>
<style></style>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Das ist ein Test.</p>
<p>Das ist ein Test.</p>
<p>Das ist ein Test.</p>
</body>
</html>
我不是网络专家,所以我无法解释这到底为什么有效,但我花了很多时间来解决这个问题,我希望对我有用的解决方案也能帮助其他人。