删除页面中所有样式的最简单方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除页面中所有样式的最简单方法相关的知识,希望对你有一定的参考价值。

我需要使用javascript删除页面中的所有样式定义,以获得与在Firefox中执行View > Page Style > No Style相同的结果。哪种方法最简单?

答案

您可以递归遍历所有元素并删除style属性:

function removeStyles(el) {
    el.removeAttribute('style');

    if(el.childNodes.length > 0) {
        for(var child in el.childNodes) {
            /* filter element nodes only */
            if(el.childNodes[child].nodeType == 1)
                removeStyles(el.childNodes[child]);
        }
    }
}

removeStyles(document.body);

要删除链接的样式表,您还可以使用以下代码段:

var stylesheets = document.getElementsByTagName('link'), i, sheet;

for(i in stylesheets) {
    sheet = stylesheets[i];

    if(sheet.getAttribute('type').toLowerCase() == 'text/css')
        sheet.parentNode.removeChild(sheet);
}
另一答案

如果你有jQuery,你可以做类似的事情

$('link[rel="stylesheet"], style').remove();
$('*').removeAttr('style');
另一答案

这是ES6的优点,只需一行即可完成。

1)删除所有内联样式(例如:style="widh:100px"

document.querySelectorAll('[style]')
  .forEach(el => el.removeAttribute('style'));

2)删除链接外部样式表(例如:<link rel="stylesheet"

document.querySelectorAll('link[rel="stylesheet"]')
  .forEach(el => el.parentNode.removeChild(el));

3)删除所有内联样式标签(例如:<style></style>

document.querySelectorAll('style')
  .forEach(el => el.parentNode.removeChild(el));
另一答案

实际上,document.querySelectorAll返回NodeList,其中有forEach方法。

document.querySelectorAll('link[rel="stylesheet"], style')
  .forEach(elem => elem.parentNode.removeChild(elem));

以上是关于删除页面中所有样式的最简单方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery 从选择下拉列表中删除所有条目的最简单方法是啥?

删除所有表以在 Django 中运行 syncdb 的最简单方法?

XSS:如何从 C# 中的字符串中删除 JS 片段?

从 wordpress 中删除未使用的样式

从每个参数中删除尾部斜杠的最简单方法是啥?

获取页面所有元素并添加样式的控制台调试语句。