2010-03-18 112 views
3

我正在尝试显示HTML电子邮件的“预览”。我有我的数据库中的HTML,现在我需要在iframe或弹出窗口或其他东西。我试图将html注入到页面上的div标签,但它不会显示任何内容。下面是我遇到了(我有嵌套的HTML标记)的问题:因为你不能有一个文档中两个HTML结构将无法工作如何显示HTML电子邮件在网页上预览?

<html> 
    <body> 
     <h1>My page</h1> 
     <div id="email-body"> 
      <html> 
       <body> 
        <p>email</p> 
       </body> 
      </html> 
     </div> 
    </body> 
</html> 
+0

你可以解析它并只显示身体内容吗?也许使用jquery来加载电子邮件的整个DOM,然后选择body标签的内容并将它们添加到您的div中。 – 2010-03-18 22:00:14

回答

2

您可以将HTML写入弹出窗口。

var preview = window.open("", /* options */); 
preview.document.write(html); 
preview.document.close(); 

但是和我一样,很多人不喜欢弹出窗口。另一个考虑是只显示只有<body>的内容。更好的是,大多数邮件客户端只是支持它。如果内容类型为text/html,则可以发送HTML邮件,就好像它将成为HTML <body>的一部分。

<p>email</p> 

这样你就可以预览,只需要在主页面的某个div中注入它通常的方式。

如果你喜欢风格的元素,但不喜欢内联样式,你还可以添加<style>元素。大多数这些邮件客户端也只是支持它。

<style>p { font-family: arial, sans-serif; }</style> 
<p>email</p> 

从HTML纯粹主义者的观点来看,这确实在语法上是无效的。但它的工作原理(也在网页浏览器中),并且可以大大简化这些内容。

+0

嘿,这也是一个不错的主意 - 但是你必须逃避(并重新使用)正在写入的HTML。您可以将相同的逻辑应用于IFRAME。 – 2010-03-18 22:59:02

0

做到这一点,我可以看到的唯一方法是使用iframe

+0

这就是我正要说的。唯一的问题是你不能“嵌入”在'