6

注: 私はページ内で複数の見出しを推奨しているわけではありません


私は Apache Tiles を使用しており、独自のヘッドを含むいくつかのタイルがあります。タイルの結果は、複数のヘッダーを持つ HTML ページにレンダリングされます。

私の質問:

  1. 結果のページは IE と Chrome でどのように処理されますか? [レンダリングされ、成功したように見えます]
  2. WITH APACHE TILESすべてのページで同じ JS および CSS ファイルを使用することを要求せずに [CSS/Javascript 用に] 複数のヘッドを処理/回避するためのベスト プラクティスは何ですか。

質問 2 の例: 次のページがあるとします: ホームページ、プロフィール、ギャラリー リスト。ギャラリーのリストには、派手な JQuery+YUI+... などのスタイルがあります。ほとんどのユーザーにとって、関心があるのはホーム ページとプロフィール ページだけです。ギャラリーに関連付けられた JS および CSS ファイルをロードして速度を落とす必要はありません。

生成されるのはこれ

<html>
    <head>
       <title>The Template's Title</title>
    </head>
    <body>
       <head> <script src="javascriptfile.js"/></head> Tile One Content
       <head> <script src="javascriptfile2.js"/></head> Title Two Content
    </body>
</html>

生成された内容は、javascriptfile.js、および javascriptfile2 でスクリプトを実行しています。最初の質問で私が尋ねているのは、余分な頭は無視され、内容は考慮されているのですか? それらはhtml/headレベルに結合されていますか? 2番目以降のheadにCSSファイルを含めることはできますか? これにより、より厳密な DTD でエラーが発生しますか?

4

4 に答える 4

8

まあ、最新の Chrome では、少なくとも何が起こるかを知ることは可能です。Chrome は、無効なマークアップがどのように処理されるかを正確に記述する HTML5 パーサー アルゴリズムを使用します。悲惨な詳細はhttp://dev.w3.org/html5/spec/tree-construction.html#parsing-main-inbodyにあります

あなたの例で何が起こるかは、最初<head><body>ものが破棄されることです。次に、<script src="javascriptfile.js"/>自己終了タグではなく開始タグであるタグが処理されるため、タグのように見えるすべてのものを含め、後続のすべてがスクリプト要素のテキストの子になります。何も表示されず、スクリプトも実行されません。<script src="javascriptfile.js"/>が に置き換えられ<script src="javascriptfile.js"></script>、が に置き換えられた場合 <script src="javascriptfile2.js"/>、先頭の開始タグと終了タグはサイレントに破棄され、スクリプト要素は移動されません。「Tile One Content Title Two Content」が表示され、スクリプトが実行されます。DTD はまったく違いはありません。

IE は、IE10 より前のバージョンでは HTML5 パーサー アルゴリズムを使用していないため、正確な動作は不明です。ただし、大雑把な実験では、上記と同じ動作をすることが示されているようです。

一部のレガシー ブラウザーは head にのみ表示される要素 (など) を head に移動しますが<link>、他のブラウザーは移動せず、そのような動作は信頼できません。

全体として、そのような構造を避けるのが最善です。

Apache Tiles のプラクティスについては知りません。

于 2011-09-27T22:05:59.640 に答える
6

ひどく無効なことをする目的は何ですか?そして、なぜあなたがこれを求めているのかは非常に不明確に思えます。

1ページに1つのセクションしかないだけでなく、どのような状況でもセクション内のどこかにネストすることはでき ません。 <head></head><head></head><body></body>

この方法はまったく意味がありません。

補足: 特定のブラウザーは、DOMが構築されるときに無効なタグを無視または移動するため、これを行うという目的全体が無効になります。)

編集(コメントに基づく):

<script>内にタグを含めることに興味がある人は、ここ<body>で私の回答で特定の詳細を読むことができます...

ヘッダーではなく本文でjavascriptファイルをリンクすると問題が発生しますか?

于 2011-09-27T20:50:04.267 に答える
2

追加のcss/jsを含めるために追加のヘッドは実際には必要ありません。パーツ全体を「インライン化」<style type="text/css">...</style>すると、正常にレンダリングされます。検証しますか?いいえ。ただし、正常に実行されます。

于 2011-09-27T20:49:34.043 に答える
0

結果のページはIEとChromeでどのように処理されますか?[レンダリングして成功したように見えます]

わからないし、本当に知りたくない。

すべてのページが同じJSとCSSを使用することを要求せずに、[CSS/Javascriptの]複数のヘッドを処理するためのベストプラクティスは何ですか。

しないでください:-)

追加のタグなしでbody/にJSファイルを含めることができない理由はありますか?head

または、ドキュメントの「通常の」セクションにcss/ファイルを追加します(本来あるべき場所)。jshead

少なくとも、ページの読み込みが開始されたらすぐにCSSファイルを読み込む必要があります。JSファイルは(場合によっては)HTMLの最後にロードできます。
たとえば、JSファイルに完全にロードされたDOMが必要な場合(たとえば、DOM要素へのアクセス)。

ノート

申し訳ありませんが、これは実際にはあなたの質問に対する答えではありませんが、あなたがしていることは非常に悪いように見えます。:)そして、ほぼ確実に必要ありません/それのためのより良い解決策があるでしょう。

于 2011-09-27T20:49:52.283 に答える