6

<head>私は CMS を使用していますが、ブログ投稿の にコンテンツを追加できないというバグがあるようです。ほとんどの場合、問題なく動作しますが、次のようなコードのインスタンスでは、すべてを本文に挿入します。

<style type="text/css">
 .slideshow img { display: none }
 .slideshow img.first { display: block }
</style>

<body>すべての主要なブラウザーでタグ内に配置された場合、そのタイプのコードは実行されますか? (IE8+、Firefox、Chrome、および Safari。)通常、それは常に<head>ページの中にあります。

注: これは FF 15 で動作するように見えますが、他のブラウザーについてはわかりません。

4

5 に答える 5

10

本文にスタイル タグがあるのは無効なコードです。

すべてのブラウザは、意味のある方法で無効なコードを使用しようとします。いずれにせよ、一部のブラウザーはスタイル ルールを使用しているように見えますが、現在および将来のすべてのブラウザーの動作がそれであることに依存することはできません。完全に理にかなっている別の動作は、無効なスタイル タグを無視することです。

同じブラウザ内でも、ページが標準準拠モードでレンダリングされるか、互換モードでレンダリングされるかによって、動作が異なる可能性があることに注意してください。標準準拠モード (これが推奨されます) では、ブラウザーはより厳密になり、作成者がコードで何を意図したかを推測しようとするのではなく、無効なコードを無視する傾向があります。


更新 2014:

HTML5 では、body 要素でスタイル タグを使用できます。HTML5 を認識しない古いブラウザーや、HTML5 doctype がない場合は、依然として無効なコードです。

于 2012-07-21T23:22:59.303 に答える
3

<script>要素が本体に表示される可能性があるため、Javascript は別のアイデアです。もちろん、これはユーザーが Javascript を許可するかどうかによって異なります。

別の選択肢はありません(もちろん、styleどこにでもある属性は別として)。

または、@Coleが叫ぶのに、本体で使用するだけですか? このscript要素がHTML 3.2でプレースホルダーとして導入されたとき、仕様には「ユーザー エージェントはこれらの要素のコンテンツを非表示にする必要がある」と記載されていました。そのため、すべてのブラウザーがそれを非表示にするという希望が少なくともいくらかあります (スタイルとして解釈しない場合でも)。

于 2012-07-21T23:13:46.207 に答える
2

CMS によってロードされた CSS ファイル (つまり、テーマ タイプのスタイルシート) を変更できる場合は、そのコードを CSS ファイルの最後に置き、コメントを使用してカスタム スタイルを示す (今後の参考のために) か、CSS インポートを使用します。 CSS をテーマにピギーバックするルール。

于 2012-07-21T23:14:27.310 に答える
2

はい、ブラウザーはstyle要素を認識して適用しますbody。「後方」に適用することさえできます。つまり、要素の前に表示される要素のスタイルを設定できますstyle

これをチェックするのは簡単ですが、将来を予測するのはより困難です。これはあなただけではありません (CMS にそのような制限 (実際にはバグではなく意図的な制限) があることはかなり一般的です)、そのような機能を使用しなければならなかった多くの Web コンテンツがあります。したがって、ブラウザがサポートをやめる可能性は低いですが、いつか「標準モード」で拒否する考えが浮かぶかもしれません。

HTML5 ドラフトは現在、これを標準化することを提案していません。代わりに、要素の効果が囲んでいるブロックに制限されるという意味で、属性が使用されている場合にのみ許可styleするという考えがあります。これは奇妙ですが、属性を持たない要素が .NET でグローバルな効果を持つという慣習と実際に矛盾するわけではありません。bodyscopedstylestylescopedbody

もちろん、他に合理的な方法がある場合は、この機能を使用しないでください。

于 2012-07-22T05:02:41.247 に答える
0

答えは、いいえ、主要なブラウザーのいずれでもレンダリングされるべきではないということです。

いくつかのコメントが指摘しているように、そうすべきではありません。つまり、結果が定義されていないことを意味します。つまり、動作するはずですが、確信が持てません。

場合によっては (つまり、設計が不十分な CMS を使用している場合)、これが唯一の選択肢になることもありますが、一般的には悪いことです。

本当にそれを行う必要があり、それについて心配している場合、1 つの解決策は、コンテンツを HTML コメントに入れることです。

<style type="text/css">
<!--
 .slideshow img { display: none }
 .slideshow img.first { display: block }
-->
</style>

<style>これにより、本文に含まれるのを好まないブラウザでも表示されないようにする必要があります。

もう 1 つのオプションは、外部スタイルシート ファイルに配置し、<style>タグを使用して含めることです。これでも機能するはずですが、要素には直接的なコンテンツがないため、動作の悪いブラウザーが表示するものは何もありません。

それが役立つことを願っています。

于 2012-07-21T23:14:36.623 に答える