2016-10-19 6 views
2

jQuery Mobileの「複数ページ」ドキュメントを使用しているサイトで、1つのhtmlドキュメントのdivとしてコーディングされたサイトのいくつかの「ページ」がある場合があります。ここでは基本的な構造です:「文書は、複数の主要な要素を含めることはできません」複数ページのドキュメントで複数の主要な要素を使用できますか?

<body> 
    <div data-role="page" id="page1"> 
     <header>Page 1</header> 
     <main>Content...</main> 
     <footer>...</footer> 
    </div> 
    <div data-role="page" id="page2"> 
     <header>Page 2</header> 
     <main>Content...</main> 
     <footer>...</footer> 
    </div> 
</body> 

示すように、私はHTML5 <main>要素を使用したいのですが、W3Cのバリデータが言って、私にエラーを与えます

私は、w3c規格ではドキュメントごとに1つしか<main>が許されていることを理解します。しかし、role="main"のアリア規格(<main>にマッピングされている)は、それぞれが異なるドキュメントノードに関連付けられていると仮定すると、複数の主要な要素をDOM子孫として許可します(https://www.w3.org/TR/wai-aria/roles#main)。

jQuery Mobile [data-role='page'] divsは「別のドキュメントノード」としてカウントされますか?複数の<main>要素を一度に1つだけエンドユーザーに公開することはできますか?

(非アクティブのjQueryモバイルページは文書 <body>であるが、 display:"none"に隠されていることに注意してください。)メンテナここW3C HTMLチェッカー(バリ)の

答えて

2

。私はjQuery Mobileの複数ページのドキュメントに精通していませんが、1つの論理ドキュメントにつき1つの要素がユーザーに公開されているような場合は、要件の精神に従っているようです。

一般的に、ドキュメントごとに複数のmainを持つのは悪い考えだから、W3Cチェッカーはこれより厳しいです。しかし、それはチェッカーにURLを確認するときには静的なHTMLソースだけを見てJavaScriptを実行しないので、実際のユーザーが見るものを非常に正確に表現できない場合もあります。

たとえば、ここでの質問に記載されている場合、ユーザーが見るものは、URLの単一のドキュメントではなく、一連の論理ドキュメントです。

このように、W3C HTMLチェッカーの代わりにhttps://checker.html5.org/を使用して文書をチェックしてみてください。 mainの場合、requirements in the upstream WHATWG specと照合します。これは、W3Cバージョンの対応する要件よりも厳密ではありません。

つまり、https://checker.html5.org/を使用すると、複数のmain要素のエラーは発生しません。

+0

答えに@sideshowbarkerありがとうございました。 https://checker.html5.org/には、複数の 'main'要素に対してhttps://validator.w3.orgと同じエラーが実際に表示されるようです。 私は、w3cチェッカーが 'role =" main "を複数回使ってエラー(または警告)を出すのではないことに気付きました。なぜ 'role =" main "は'

'と同じ扱いにはならないのでしょうか?また、なぜ警告ではなくエラーですか? – jghificationify

+1

> * https://checker.html5.orgは、複数の 'main'要素に対してvalidator.w3.orgと同じエラーを表示しているようです* ...おっと、申し訳ありません、もう一度やり直してください。 https://checker.html5.orgに修正してください – sideshowbarker

+2

複数の 'role =" main "'に対してエラーや警告がないのは、HTML文書で複数の 'role = "main" - ドキュメントに複数の 'main'要素を含めることはできません(https://www.w3.org/TR/html5)を明示する仕様(W3C HTML5勧告)が存在するにもかかわらず、 /grouping-content.html#the-main-element)*。 – sideshowbarker

0

mainタグの主な目的は、スクリーンリーダーやその他の補助技術が主要なコンテンツの開始位置を理解するのを助けることです。

W3C標準に準拠しているため、ドキュメントごとに1回のみ使用してください。ドキュメントごとに複数のmainタグを使用しようとすると、w3cバリデーターはエラーをスローします。また、記事、脇、フッター、ヘッダー、またはnav要素の子孫として使用することはできません。 W3C HTML Editors Draftから

引用:

ドキュメントやアプリケーションの身体の主な内容。主コンテンツ領域は、ドキュメントの中心トピックまたはアプリケーションの中心的機能に直接関係する、またはそれを拡張するコンテンツで構成されます。

mainはセクション区切りではありません。記事、セクションまたはnavの方法でドキュメントのアウトラインには影響しません。

しかしHTML5 Living Standardsに従って:

ドキュメント内の主要な要素の数についての制限はありません。実際には、 に複数の主な要素があることは意味をなさない多くの場合があります。例えば、複数の記事 要素を含むページは、そのような各要素の主要な内容を示す必要があります。

SEOになると思います。あなたのSEOが影響を受けるのをやめたくない場合は、複数のmainタグを使用しないようにして、HTMLのarai-*ロールタグを使用してください。

関連する問題