用重复的内容保持良好的语义

Preserving good semantics with repetitive content

假设我正在构建一个典型的文档编辑器:

其中预览(红色)是表单数据的最新格式化视图。

预览元素包含语义元素(例如h1h2mainheader等)。它本身就是一份文档,从概念上讲确实有意义。但这使得 real 文档的结构对于爬虫和屏幕阅读器来说相当混乱。例如,可能有两个 h1main 元素。我正在寻找避免这种情况的方法。

此外,还有内容重复的问题(见图)。

对于问题的可访问性部分,我可以向预览元素添加一个 aria-hidden="true" 属性。事实上,视障人士不需要预览,这对他们来说只是多余的,他们只需要表格。

但对于爬虫,我的选择如下:

任何 idea/resource/suggestion?

只要您的预览区域明确指出辅助技术,有多余的信息就完全没有问题。如果您有 <iframe>,请确保其上有 title 属性。

<iframe title="preview area"...>

但是,您可能 validator 有多个结构元素的问题。

例如HTML只允许一个<main>元素:

A document must not have more than one main element that does not have the hidden attribute specified.

可以有多个<header> elements but a <header> has a default role of banner并且横幅角色说:

Within any document or application, the author SHOULD mark no more than one element with the banner role.

这里的关键是“should", meaning it's a strong recommendation but not required. You can also get away with multiple banner roles if your preview section has role="document".

我建议 不要 使用 non-semantic 元素 (div),因为辅助技术用户可能想要检查生成内容的实际语义结构,尽管我想您也可以为使用所有完整语义的预览设置“在新选项卡中显示”选项,有点像您的第二个项目符号,但不使用 iframe。