只需20行代码就可以写出CSS覆盖率测试脚本


Posted in Javascript onApril 24, 2013

document.styleSheets里保存了当前页面上所有CSS规则的集合。通过它可以遍历出页面<style>里定义的所有selector,访问selectorText属性可得选择器的匹配规则。然后将规则规则传递给 document.querySelectorAll 即可获取页面内匹配此规则的元素列表。

这里我们只求CSS规则的覆盖率,所以访问 querySelectorAll().length 即可。通过排序就可看出各个CSS使用情况。

代码很简单。

var usage = [];
var sheets = document.styleSheets;
for(var i = sheets.length - 1; i != -1; i--) {
    var rules = sheets[i].rules;
    for(var j = rules.length - 1; j != -1; j--) {
        var rule = rules[j];
        var text = rule.selectorText;
        usage.push({name: text, count: document.querySelectorAll(text).length});
    }
}
usage.sort(function(a, b){return a.count - b.count});
for(var i = usage.length - 1; i != -1; i--) {
    console.log("选择器:" + usage[i].name + "\n\t匹配数:" + usage[i].count);
}

 

呼出F12,把代码粘到console里回车即可。

当然由于权限问题,外部导入的CSS无论如何都访问不到,暂时先不考虑了。至于不支持styleSheets的破IE嘛,可以考虑用expression或者behaviour.htc,改天试试看。

顺便贴个测试结果:

只需20行代码就可以写出CSS覆盖率测试脚本

Javascript 相关文章推荐
JavaScript DOM 添加事件
Feb 14 Javascript
Grid得到选择行数据的方法总结
Jan 17 Javascript
JS动态加载当前时间的方法
Feb 09 Javascript
JavaScript中Window对象的属性及事件
Dec 25 Javascript
jQuery中的each()详细介绍(推荐)
May 25 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
Sep 21 Javascript
js获取浏览器的各种属性
Apr 27 Javascript
Vue.js鼠标悬浮更换图片功能
May 17 Javascript
VUE元素的隐藏和显示(v-show指令)
Jun 23 Javascript
使用async-validator编写Form组件的方法
Jan 10 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
May 14 Javascript
JS继承最简单的理解方式
Mar 31 Javascript
js Array对象的扩展函数代码
Apr 24 #Javascript
网页中返回顶部代码(多种方法)另附注释说明
Apr 24 #Javascript
onkeypress字符按键兼容所有浏览器使用介绍
Apr 24 #Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
Apr 24 #Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
Apr 24 #Javascript
基于jQuery实现图片的前进与后退功能
Apr 24 #Javascript
查看图片(前进后退)功能实现js代码
Apr 24 #Javascript
You might like
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
PDO实现学生管理系统
2020/03/21 PHP
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Python中pygame安装方法图文详解
2015/11/11 Python
python 网络爬虫初级实现代码
2016/02/27 Python
Python编码爬坑指南(必看)
2016/06/10 Python
python实现XML解析的方法解析
2019/11/16 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
浅谈Python中的字符串
2020/06/10 Python
Python是怎样处理json模块的
2020/07/16 Python
python实现定时发送邮件
2020/12/23 Python
用canvas实现图片滤镜效果附演示
2013/11/05 HTML / CSS
纬创Java面试题笔试题
2014/10/02 面试题
电气个人求职信范文
2014/02/04 职场文书
一句话工作感言
2014/03/01 职场文书
审计班子对照检查材料
2014/08/27 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
Python竟然能剪辑视频
2021/05/25 Python
Pytorch中的数据集划分&正则化方法
2021/05/27 Python