5

重複の可能性:
noscript を使用して余分なスタイルを埋め込む
javascript が有効になっていない場合は css を定義する

Javascript がオフになっている場合にのみ、特定の CSS スタイルを定義しようとしています。私は使っている:

<noscript>
    <style type="text/css">
    .needjs {display:none !important;}
    .mwnojs { margin-top: 40px !important; }
    </style>
</noscript>

ページ ソースを検証しようとすると、「このコンテキストでは、要素スタイルは要素 noscript の子として許可されていません」というエラーが表示されます。

では、マークアップを有効に保ちながらこれを行うにはどうすればよいでしょうか?

4

5 に答える 5

3

<noscript>タグは「body」タグで、<style>タグは「head」タグです。そのため、エラーが発生します。

JavaScript 以外のスタイルをデフォルトにしてから、js を使用してスタイルを変更する必要があります。詳細については、こちらをご覧ください: https://stackoverflow.com/a/218917/1068167

于 2012-12-19T21:52:22.210 に答える
1

この質問に非常に似ているようです

「検証の問題を解決するには: noscript は body 要素でのみ許可され、style は head でのみ許可されます。したがって、後者は前者内では許可されません。」

<noscript>タグがどこにあるかが問題になる場合があります。

于 2012-12-19T21:52:52.850 に答える
0

次のようなことを試してください:

<html class="nojs">
<head>
<script type="text/javascript">
document.getElementByTagName("html")[0].className="";
</script>
<style>
html#nojs {
   /* do something */
}
</style>

これにより、ページの読み込み中にクラスが削除されます。JavaScript が有効化されていない場合、クラスは削除されません。

于 2012-12-19T21:51:57.390 に答える
0

これらのクラスをデフォルトのスタイルシートに配置し、ページの読み込み時に JavaScript でそれらのクラスを削除することで、これを回避できます。これは、JavaScript が有効になっている場合にのみ機能します。それ以外の場合は、目的のスタイルが読み込まれます。

于 2012-12-19T21:52:19.353 に答える
0

たとえば、逆の方法で、JavaScript を介して一部の css ファイルを無効にすることができますが、アクティブ化されていない場合は発生しません。

于 2012-12-19T21:53:23.973 に答える