1

Using <noscript> inside of another tag seems to cause it to take on its own style (that is, none), and forces the text inside to take its own line (even if display:inline is set with CSS). Is there any way to avoid this, or a workaround to use instead?

Here is what I mean: http://www.webdevout.net/test?01I

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
  <head>
    <title>Test</title>
 <style type="text/css">
  p { font-family:sans-serif; font-size:12px;}
  noscript {display:inline !important;}
 </style>
  </head>
  <body>
    <p>This is some text<noscript> that should be displayed on the same line with the same style if JS if disabled.</noscript></p>
  </body>
</html>
4

4 に答える 4

1

script/noscript タグを使用するよりも、別のアプローチをお勧めします。

次のようなものが最適です。

<!DOCTYPE html>
<html class="noJS">
    <head>
    <title>noJS Demo</title>

    <style type="text/css">
        html.noJS .jsRequired,
        html .noJS{
            display: none !important;
        }

            html.noJS span.noJS{
                display: inline !important;
            }

            html.noJS div.noJS{
                display: block !important;
            }
    </style>

    <script type="text/javascript">
        function onDocumentLoad(){
            var html = document.getElementsByTagName("html")[0];
            html.className = html.className.replace("noJS", "");
        }
    </script>
    </head>
    <body onLoad="onDocumentLoad();">
        <p>This is some text<span class='noJS'> that should be displayed on the same line with the same style if JS if disabled.</span></p>
    </body>
</html>

もちろん、jQuery のようなフレームワークを使用する場合、JavaScript はさらに簡単です。JS 関数と本体から関数を削除し、次の JS を使用するだけです。

$(document).ready(function(){
    $("html").removeClass("noJS");
});
于 2011-05-18T02:11:20.327 に答える
1

古いが関連する質問 - http://www.tigerheron.com/article/2007/10/alternative-noscript-tagは、優れた非常に単純な解決策を示しています。

<head>「 Web ページのセクションに次のコードを挿入します。

<script type="text/javascript"> document.write('<style>.noscript { display:none }</style>'); </script>

<noscript>インラインを使用する必要がある場合は、<span class="noscript">代わりに使用してください。"

于 2012-08-23T14:49:33.773 に答える
0

noscriptタグ内にスパンのような要素を入れて、スパンのスタイルを設定してみましたか?ロングショットですが、うまくいくかもしれません。

または、セレクターで非常に具体的にして、それを試してみてください。のようなもの#content p noscript { display:inline !important; } が動作する可能性があります。しかし、それはまた不溶性かもしれません。

最後の手段として、noscriptタグを捨てて、スパン(または選択した要素)を入れて、それにnoscriptのクラスを与えることができます。次に、jsで最初のものを削除します。

于 2010-03-04T09:48:06.853 に答える
0
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
  <head>
    <title>Test</title>
 <style type="text/css">
  p { font-family:sans-serif; font-size:12px;}
 </style>
  </head>
  <body>
    <script type="text/javascript">document.write('<p>This is some text</p>');</script>
    <noscript><p>This is some text that should be displayed on the same line with the same style if JS if disabled.</p></noscript>
  </body>
</html>

このようなものは、あなたが望むことをするはずです。もちろん、代わりに目立たない方法を使用する必要がありますが、今のところそれは標準以上だと思います。

于 2010-03-04T08:37:46.613 に答える