Javascript 删除所有与内联字体相关的标记,即使其位于内联样式中
我有一个DOM,在这个DOM中,我加载了整个网页的HTML。我想删除所有与字体相关的标记,即使它位于样式标记内Javascript 删除所有与内联字体相关的标记,即使其位于内联样式中,javascript,html,dom,Javascript,Html,Dom,我有一个DOM,在这个DOM中,我加载了整个网页的HTML。我想删除所有与字体相关的标记,即使它位于样式标记内 $("font").attr("face", ""); $("*").css("font", ""); 您可以使用jQuery清除font元素的事实属性,并清除DOM中所有css的font feom。这里有一个纯Javascript函数,可以将任何指定的标记集转换为: 演示 使用可以简化代码,因为它保持了原始DOM树,并且避免了将相邻文本节点折叠在一起的需要 添加要
$("font").attr("face", "");
$("*").css("font", "");
您可以使用jQuery清除font元素的事实属性,并清除DOM中所有css的font feom。这里有一个纯Javascript函数,可以将任何指定的标记集转换为
:
演示
使用
可以简化代码,因为它保持了原始DOM树,并且避免了将相邻文本节点折叠在一起的需要
添加要剥离的额外标记是微不足道的。处理特定于字体的内联样式标记需要一些额外的工作,尽管删除每个
style
属性很容易,如下所示。当然可以手动完成;)
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 };