只需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 相关文章推荐
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
Nov 24 Javascript
jQuery子窗体取得父窗体元素的方法
May 11 Javascript
原生JavaScript实现瀑布流布局
Jun 28 Javascript
基于JavaScript实现TAB标签效果
Jan 12 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
Apr 18 Javascript
JavaScript的instanceof运算符学习教程
Jun 08 Javascript
jQuery simpleModal插件的使用介绍
Aug 30 Javascript
jQuery扇形定时器插件pietimer使用方法详解
Jul 18 jQuery
Vue二次封装axios为插件使用详解
May 21 Javascript
在vue中读取本地Json文件的方法
Sep 06 Javascript
layui固定下拉框的显示条数(有滚动条)的方法
Sep 10 Javascript
jQuery实现的解析本地 XML 文档操作示例
Apr 30 jQuery
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读取RSS feed的代码
2008/08/01 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php如何调用webservice应用介绍
2012/11/24 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
JS 表单验证大全
2011/11/23 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
JS实现跟随鼠标立体翻转图片的方法
2015/05/04 Javascript
javascript制作幻灯片(360度全景图片)
2015/07/28 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
JavaScript基于自定义函数判断变量类型的实现方法
2016/11/23 Javascript
JS 实现随机验证码功能
2017/02/15 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
python控制台中实现进度条功能
2015/11/10 Python
Windows安装Python、pip、easy_install的方法
2017/03/05 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
python Canny边缘检测算法的实现
2020/04/24 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
Django跨域请求原理及实现代码
2020/11/14 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
GC是什么?为什么要有GC?
2013/12/08 面试题
销售工作人员的自我评价分享
2013/11/10 职场文书
24岁生日感言
2014/01/13 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
《最可爱的人》教学反思
2014/02/14 职场文书
2014年师德承诺书
2014/05/23 职场文书
幼儿园心得体会范文
2016/01/21 职场文书