【发布时间】:2014-12-11 03:39:22
【问题描述】:
我目前正在开发一个脚本,它将扫描 HTML 文件并标记任何潜在的可访问性问题。我想解决的一个更常见的问题是标题结构——当内容创建者从 h1 跳到 h3、从 h2 跳到 h4 等时。
我正在使用 CSS 和 Cheerio(jQuery 库的 Node.js 实现)。最好的解决方案是:
var cheerio = require("cheerio"),
fs = require("fs");
var badHeadings = [];
var $temp = cheerio.load(fs.readFileSync("./file.html")
$temp("*:not('h1, h2, h3, h4, h5, h6').remove();
$temp("h1 + h3, h2 + h4, h3 + h5, h4 + h6").each(function(){
badHeadings.push($(this).html());
});
// Next use badHeadings array to search on a new cheerio instance of the same file.
事实上 Cheerio 对 ':contains' 选择器的支持有限(对 ':not' 选择器的支持参差不齐),这意味着这种方法可能并不理想。
谁能想到更简单/更好的方法?一些令人费解的 css 选择器组合甚至会受到欢迎,但我不知道这是否可能。
【问题讨论】:
-
老实说,我会首先寻求现实生活中的解决方案。大多数时候,当我告诉人们什么是标题、他们做什么以及如何使用它们时,结果通常比任何自动的都好
-
我已经知道了,不幸的是,HTML 的整个遗产都使用标题来表示样式而不是结构。成百上千页……
标签: jquery html node.js accessibility cheerio