我需要使用javascript删除页面中的所有样式定义,以获得与在Firefox中执行View > Page Style > No Style
相同的结果。哪种方法最简单?删除页面中所有样式的最简单方法
8
A
回答
13
可以递归迭代通过的所有元素,并删除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);
}
8
如果您有jQuery的,你也许可以这样做
$('link[rel="stylesheet"], style').remove();
$('*').removeAttr('style');
1
使用ES6 Array.from
Array.from(document.querySelectorAll('link[rel="stylesheet"], style'))
.forEach(elem => elem.parentNode.removeChild(elem));
1
这里是ES6善良,你可以只用一行做。
1)要删除所有内嵌样式(如:style="widh:100px"
)
Array.from(document.querySelectorAll('[style]'))
.forEach(el => el.removeAttribute('style'));
2)要删除链接外部样式表(如:<link rel="stylesheet"
)
Array.from(document.querySelectorAll('link[rel="stylesheet"]'))
.forEach(el => el.parentNode.removeChild(el));
3)要删除所有内嵌样式标签(例如:<style></style>
)
Array.from(document.querySelectorAll('style'))
.forEach(el => el.parentNode.removeChild(el));
相关问题
- 1. 最简单的方法删除行
- 2. 删除子页面中所有当前应用的ContentPlaceHolder样式?
- 3. 以最简单,最简单的方式编辑一个页面
- 4. 通过简单的html dom删除页面的所有href
- 5. 从网页中删除所有内容的最佳方式?
- 6. 删除所有非单词字符的简单方法
- 7. C# - 在Page_Load方法的所有页面中执行代码的简单方法
- 8. 什么是删除我所有blobstore数据的最简单方法?
- 9. 删除HTML页面中的所有JavaScript
- 10. 删除部分HTML页面的样式
- 11. 删除HTML页面的样式标签
- 12. 最简单的方法从FPU堆栈中删除东西
- 13. 从XML中删除值的最简单方法是什么
- 14. 从2D阵列中删除键的最简单方法?
- 15. 最简单的方式在页面中内嵌
- 16. 简单的方法来删除URL中的所有斜线在java中
- 17. GWT多个页面(最佳/最简单的方法)
- 18. 有没有简单的方法从数组中删除项目?
- 19. Postback从页面删除样式
- 20. 删除所有子元素的样式
- 21. 从文本文件中删除单词的所有实例的最简单方法
- 22. 最简单的方法来删除陈旧的ContentTypes?
- 23. 如何删除RealmResults列表中最快和最简单的所有项目?
- 24. 最简单的方法来添加/删除模型关系
- 25. 最简单的方法来查找和删除重复?
- 26. 最简单的方法删除一段文字,n次
- 27. 强制删除WebSocket连接最简单的方法是什么?
- 28. 检测最简单的方法/删除PHP代码库
- 29. 从Primefaces组件删除所有样式?
- 30. 删除大表中所有数据的最快方法
这将删除直接应用的样式元素,但不会影响CSS。 – 2012-02-12 22:30:06
@kennis谢谢你指出 - 只是我的答案... – xandercoded 2012-02-12 22:39:32
你的代码似乎很有希望。无论如何,我必须运行第二个片段两次才能生效。为什么? P.S .: .toLowerCase() – tic 2012-02-12 22:59:51