思路是读邮件时先将邮件内容write到一个 iframe 元素中,然后通过下面这个函数去得到一些重要的样式值,收集这些值显示写到其style属性里,然后取得其 innerHTML,这样就可以部分保留html片段原先的格式。处理方法如下:

//没考虑兼容性,只支持 getComputedStyle 的浏览器function traverse (node) {
    //定制想收集样式的结点
    var nodes = node.querySelectorAll("style,script,div,a,span,table,tr,th,tbody,td,hr,article,section,aside,header,img");
    var tempNode;
    var cssCollection; 
    //想收集的属性集合
    var needProp = ["background","border","boxShadow","color","content","cursor","display","float",
                    "font","fontFamily","fontSize","fontWeight",
                    "height","letterSpacing","lineHeight","margin","opacity","outline","overflow","padding",
                    "position","src","stroke","textAlign","visibility","whiteSpace","width",
                    "wordBreak","wordSpacing","wordWrap","zIndex","zoom"];   
    var i2 = 0, len = 0;    //迭代器    var newCssText = "";    //组装新的style属性内容    var l = nodes.length;
    if (l < 500) {       //如果内容矿长结点过多会影响性能,这里限制为500个以内结点 
         for (var i=0; i < l; i++) {
            tempNode = nodes[i];
            cssCollection = window.getComputedStyle(tempNode,null);
            if ("STYLESCRIPT".indexOf(tempNode.tageName) > -1) {//remove掉style 和script结点 
                node.removeChild(tempNode);
            } else {
                for (i2=0,len=needProp.length; i2 < len; i2++) {
                    newCssText += needProp[i2] + ":" + cssCollection[needProp[i2]] + ";";
                }
                tempNode.style.cssText = newCssText;
            }
        }
    }

return node.innerHTML;
}

转载于:https://www.cnblogs.com/ihada/archive/2012/05/16/2503430.html

如何在阅读邮件时时保留原有html格式正文的样式相关推荐

  1. 尽可能保留原有数据,建立UEFI与BIOS双启PE优盘

    尽可能保留原有数据,建立UEFI与BIOS双启PE优盘 1.确保优盘或者移动硬盘有一个FAT32分区,如果没有FAT32分区,就用傲梅分区助手或者ppm转换一个现有的分区到FAT32分区0x0C,或者 ...

  2. foxmail 服务器备份 立刻删除_Foxmail删除服务器邮件而保留本地备份的详细操作方法...

    Foxmail删除服务器邮件而保留本地备份的详细操作方法 作者:小葫芦 来源:PC下载网时间:2019-07-17 14:49:11 很多的公司中与客户发送资料都是使用Foxmail,那么你们知道在F ...

  3. 改造家里的开关成为智能开关,保留原有开关控制,零火版,射频遥控器篇(二)

    改造家里的开关成为智能开关,保留原有开关控制,零火版 ,射频遥控器篇(二) 阳阳学编程 更新说明 本文章在"改造家里的开关成为智能开关,保留原有开关控制,零火版(一)"版本的基本上 ...

  4. 超简单的方法完整保留原有所有样式拆分Excel表

    本文作为一篇原始雏形已经过时,新版本的文章请移步到: 深度剖析Excel表拆分的三项技术(已实现纯Openpyxl保留全部样式拆分,自适应单文件和多文件拆分等):https://blog.csdn.n ...

  5. MATLAB AppDesigner 中TextArea保留原有信息并换行显示提示信息

    App Designer 中的文本区域TextArea组件,一般可以用来作为matlab app设计中的信息显示. app.TextArea.Value = 'Hello Matlab'; Value ...

  6. peel在Linux生成excel,如何将多个Excel文件合并成一个且保留原有数据?

    如何将多个Excel文件合并成一个且保留原有数据?事实上,我们可以借用Excel宏命令来处理该操作,并且保留原有数据,建立多个Sheet页,具体操作请看下文多个Excel文件合并成一个的方法. 如何将 ...

  7. CAS客户端使用Ajax登陆(即保留原有客户端登录页面)

    前言     因为对项目的不熟悉,在使用CAS的时候,踩了蛮多的坑,前面的文章提到了怎么跟shiro集成,可以说是花了比较多的时间.而实际的需求却不止于此.公司希望保留原有应用的登录页面.这个可又是一 ...

  8. springboot:java实现邮件及附件发送、HTML正文的三种方式(一)【附带源码】

    0. 引言 邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒.统计数据定期发送等需求.一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从零实现邮件发送,这是我们要掌 ...

  9. php 点击之后保留样式,通过不修改arc.archives.class.php而保留原有样式调上一篇下一篇...

    今天织梦站长分享一个织梦内容页上下篇的调用方法,估计在大家在仿站的过程中,经常会碰到原站的上下篇很美观,比如如图类似的这种:或,但是用织梦原有调用上下篇的标签来调用,总达不到我们想要的效果,找不到原站 ...

最新文章

  1. 安装modelsim
  2. hushen 300
  3. 符号化Symbol(符号)体系(转载)
  4. boost::mpl::negate相关的测试程序
  5. 【nginx+lua高性能web应用开发(二):开发评论模块(ssi+mysql)】
  6. 【HDU - 5917】Instability(规律,结论,Ramsey定理,知识点,tricks)
  7. 第三届“空间信息网络”学术论坛诚邀您的参加
  8. db_host 直接用ip地址吗_新买的粉扑能直接用吗?使用粉扑要注意什么?
  9. 海康VisionMaster绘制图形到显示窗口
  10. Linux-awk直接修改原文件
  11. Java语法基础常见疑惑解答
  12. ASP.NET基础教程-利用javascript将光标定位到文本框
  13. 非常经典的java编程题全集-共50题(1-10)
  14. APP专项测试——弱网测试
  15. 宏观经济学 马工程教材个人笔记整理
  16. linux运行blast,Linux下BLAST的使用
  17. 微信公众号内测开放个人订阅号认证!
  18. 论文阅读5 Cv-CapsNet:Complex-Valued Capsule Network
  19. 遇到100万行的 Excel,还没打开,电脑和我都崩溃了,该怎么办?
  20. UAF 身份认证框架

热门文章

  1. 破案现场:记一次压测异常排查--Redisson锁失效的场景
  2. Windows命令行更换pip国内源
  3. boot.artboot.oat
  4. 祖安服务器位置,LOL新玩家入坑首选哪区?巨神峰逆袭夺魁 网速地域论并非谣言...
  5. python好看的折线图_漂亮图表也可信手拈来,一文学会用Python绘制堆积折线图
  6. Go语言初始化结构体的几种方式
  7. 史上最全数据分析师资料免费下载[Python]
  8. React 过渡动画 路由 ui
  9. XBOOT集成开发环境入门指南
  10. 交罚查询API接口调用