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

     思路是读邮件时先将邮件内容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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值