删除所有内联字体相关标记,即使它是内联样式

时间:2012-07-16 12:46:36

标签: javascript html dom

我有一个DOM,在这个DOM中,我已经加载了整个网页的HTML。我想删除所有与字体相关的标签,即使它在样式标签中也是如此。

2 个答案:

答案 0 :(得分:3)

这是一个纯粹的Javascript函数,可以将任何指定的标记集转换为<span>

function stripFonts(el, tags) {
    if (el.tagName && el.tagName in tags) {

        // replace the element with a span
        var old = el, el = document.createElement('span');
        old.parentNode.replaceChild(el, old);

        // and move the children
        while (old.hasChildNodes()) {
            el.appendChild(old.firstChild);
        }
    }

    // recursive test all of this node's children
    var child = el.firstChild;
    while (child) {
        child.removeAttribute('style');  // NB: removes *all* style attributes
        stripFonts(child, tags);
        child = child.nextSibling;
    }
}

var tags = { 'B': 1, 'FONT': 1, 'STRIKE': 1 };

演示http://jsfiddle.net/alnitak/4fBRQ/

使用<span>简化了代码,因为它维护了原始的DOM树,并且无需将相邻的文本节点折叠在一起。

添加要删除的额外标签是微不足道的。它需要一些额外的工作来处理字体特定的内联样式标记,尽管删除每个 style属性很容易,如此处所示。

答案 1 :(得分:2)

     $("font").attr("face", "");
    $("*").css("font", "");

您可以使用jQuery

清除字体元素的事实attr和清除DOM中所有css的字体