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

tic*_*tic 11 javascript jquery styles

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

xan*_*ded 19

您可以递归遍历所有元素并删除该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);
Run Code Online (Sandbox Code Playgroud)

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

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);
}
Run Code Online (Sandbox Code Playgroud)

  • 这将删除直接应用于元素的样式,但不会影响 CSS。 (2认同)

Joe*_*Joe 10

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

$('link[rel="stylesheet"], style').remove();
$('*').removeAttr('style');
Run Code Online (Sandbox Code Playgroud)


小智 6

这是您可以用一行代码实现的 ES6 优点。

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

document.querySelectorAll('[style]')
  .forEach(el => el.removeAttribute('style'));
Run Code Online (Sandbox Code Playgroud)

2)为了除去链路外部样式表(例如:<link rel="stylesheet"

document.querySelectorAll('link[rel="stylesheet"]')
  .forEach(el => el.parentNode.removeChild(el));
Run Code Online (Sandbox Code Playgroud)

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

document.querySelectorAll('style')
  .forEach(el => el.parentNode.removeChild(el));
Run Code Online (Sandbox Code Playgroud)