BrowserX
BrowserX 是一个基于 NodeJS 实现的虚拟浏览器,它的目标是高效的实现 DOM 中最核心的特性,以便开发者能够在 NodeJS 中使用 W3C 标准方法来操作文档与样式。
- 提供 DOM 核心核心
- 完整支持 CSS3 选择器来查询节点
- 支持样式解析,如
element.style
、document.styleSheets
、window.getComputedStyle()
以及 CSSOM 相关构造器访问
安装
npm install browser-x
接口
browser(options, callback)
返回:Promise
var browser = ;var url = __dirname + '/debug.html';;
options
/*** 文件基础路径 - 支持本地或远程地址*/url: 'about:blank'/** HTML 文本内容*/html: null/*** 是否支持加载外部 CSS 文件*/loadCssFile: false/*** 是否忽略内部解析错误-关闭它有利于开发调试* @type*/silent: true/*** 请求超时限制* @type*/resourceTimeout: 8000/*** 最大的文件加载数量限制* @type*/resourceMaxNumber: 64/*** 是否缓存请求成功的资源* @return*/resourceCache: true/*** 映射资源路径* @param* @return*/{return file;}/*** 忽略资源* @param* @return*/{return false;}/*** 资源加载前的事件* @param*/{}/*** 加载远程资源的自定义请求头* @param* @return*/{return'accept-encoding': 'gzip,deflate';}
支持的 DOM API
- Window
- Document
- Element
- HTMLElement
- Node
注意事项
- 不支持 XML 文档解析
- 所有的 DOM 属性均为只读(计划在未来版本支持写入)
- window.getComputedStyle() 仅能获取元素或伪元素在 CSS 中定义的原始值或继承属性,但没有进行计算输出(例如 em > px)
- document.styleSheets 在浏览器中无法跨域访问 CSSOM,BrowserX 没有做此限制(外部样式需要打开
loadCssFile
选项) - 不支持浏览器怪异模式
为什么使用 BrowserX
BrowserX 适合做这些事情:
- 高效的爬虫程序,使用 CSS 选择器来收集内容
- 分析元素的样式使用情况,例如和 CSS 相关的开发工具
例如:WebFont 压缩工具——font-spider
如果需要更多的 DOM 特性,例如跑基于 DOM 的测试脚本、甚至载入 jQuery 等,那么 jsdom 这个项目可能会更适合你(注意:它没有完整解析样式表)。