我需要使用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. 删除子页面中所有当前应用的ContentPlaceHolder样式?
- 2. 删除所有非单词字符的简单方法
- 3. 从网页中删除所有内容的最佳方式?
- 4. 什么是删除我所有blobstore数据的最简单方法?
- 5. 删除HTML页面中的所有JavaScript
- 6. 删除HTML页面的样式标签
- 7. 删除部分HTML页面的样式
- 8. 从2D阵列中删除键的最简单方法?
- 9. 最简单的方法从FPU堆栈中删除东西
- 10. 从XML中删除值的最简单方法是什么
- 11. 最简单的方式在页面中内嵌
- 12. 简单的方法来删除URL中的所有斜线在java中
- 13. Postback从页面删除样式
- 14. 删除所有子元素的样式
- 15. 从Primefaces组件删除所有样式?
- 16. 最简单的方法来查找和删除重复?
- 17. 检测最简单的方法/删除PHP代码库
- 18. 最简单的方法删除一段文字,n次
- 19. 强制删除WebSocket连接最简单的方法是什么?
- 20. 删除大表中所有数据的最快方法
- 21. 使用NHibernate删除表中所有行的最佳方法?
- 22. 一个简单的方法来从XML文件删除页眉
- 23. 什么是从C#中的XML中删除所有属性的最简单方法?
- 24. 删除连接消息的页面的最佳方法?
- 25. 立即删除所有trac页面
- 26. 从网上下载HTML页面最简单的方法?
- 27. 最简单的方法类“当前页面” nav元素?
- 28. 从html页面删除mysql行的最佳方法 - 删除链接和php
- 29. HSQLDB:关闭连接后删除所有创建文件的简单方法?
- 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