zoukankan      html  css  js  c++  java
  • 如何在阅读邮件时时保留原有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;
    }


  • 相关阅读:
    7-10 社交网络图中结点的“重要性”计算(30 point(s)) 【并查集+BFS】
    7-5 打印选课学生名单(25 point(s)) 【排序】
    7-3 堆栈模拟队列(25 point(s)) 【数据结构】
    7-5 家谱处理(30 分) 【数据结构】
    7-7 最强素数(100 分) 【前缀和】
    PAT 天梯赛 L2-022. 重排链表 【数据结构】
    7-1 列出叶结点(25 分) 【数据结构】
    7-6 公路村村通(30 分) 【prime】
    PAT 甲级 1116. Come on! Let's C (20) 【循环判断】
    PAT 甲级 1104. Sum of Number Segments (20) 【数学】
  • 原文地址:https://www.cnblogs.com/ihada/p/2503430.html
Copyright © 2011-2022 走看看