21

だから私はブラウザによって無効にされているJavaScriptを処理する簡単な方法は次のようになるだろうと考えていました:

<head>
        <title>JavaScript Test</title>
        <noscript>
                <meta http-equiv="Refresh"
                        content="1;url=nojs.html" />
        </noscript>
</head>

そして、次のnojs.htmlようなものを持っています:

<p>Return to <a href="jstest.html">test</a> after enabling javascrpt.</p> 

クラッシュページで。

これは私の好みの方法ではありませんが、JavaScriptを使用せずにユーザーがより優雅に作業できるようになるまでは、便利でシンプルです。

ただし、セクションに<noscript>要素を配置することは無効です。headもちろん、予備テストはとにかく機能しましたが、コードが有効であるという点では迷信的です。さらに、これが実際にフィールドテストに失敗するのは嫌です。

それで、これを行うための有効な方法はありますか?おそらくnoscript、オブジェクトタグのような別の要素でラップしますか?または、私が考えていないさらに簡単な方法はありますか?

4

6 に答える 6

24

メッセージを表示するだけでなく、別のページにリダイレクトする必要がある理由がわかりません。私はJSと小さなCSSを使用して、これらの状況を処理します。このようなもの:

<head>
   ....
   <script type="text/javascript"> document.documentElement.className += " js"</script>

   <link rel="stylesheet" type='text/css' href="css/layout.css" media="all" />
</head>
<body>
    <div id="noscript">Please enable JavaScript, then refresh this page. JavaScript is required on this site</div>
    <div id="wrapper">
       ...
    </div>
</body>

次にlayout.css

 #wrapper      { display: none  } /* Hide if JS disabled */
 .js #wrapper  { display: block } /* Show if JS enabled */
 .js #noscript { display: none  } /* Hide if JS enabled */

このようにすることで、ページがレンダリングされるhtmlにクラスが要素に適用されるため、非JSコンテンツがJSコンテンツに交換されるときにちらつきが発生することはありません。

于 2010-02-16T03:48:42.343 に答える
6

ダグのソリューションはかなり良いですが、いくつかの欠点があります。

  • html要素にclass属性を設定することは無効です。代わりに、本体を使用してください。
  • 要素を設定する表示タイプ(つまり、 "")を知っている必要があります.js #wrapper { display: block }

同じアプローチを使用した、より単純で、より有効で柔軟なソリューションは、次のようになります。

<html>
    <head>
        <!-- put this in a separate stylesheet -->
        <style type="text/css">
            .jsOff .jsOnly{
                display:none;
            }
        </style>
    </head>

    <body class="jsOff">
        <script type="text/javascript">
            document.body.className = document.body.className.replace('jsOff ','');
        </script>

        <noscript><p>Please enable JavaScript and then refresh the page.</p></noscript>

        <p class="jsOnly">I am only shown if JS is enabled</p>
    </body>
</html>

これにより、有効なhtmlになります(html要素にクラス属性はありません)。それはより単純です(CSSが少ない)。柔軟性があります。JSが有効になっている場合にのみ表示する要素に「jsOnly」クラスを追加するだけです。

于 2011-06-03T10:27:14.840 に答える
4

<noscript>タグをに含めることはできません。タグを<head>に含める必要があります<body>

javascriptが無効になっている場合にのみリダイレクトする方法がないため、リダイレクトする代わりにメッセージを表示するのが一般的な方法です。

逆の方法で、最初のページをnojs.htmlにし、そのページでjavascriptを使用してメインコンテンツにリダイレクトすることもできます。

于 2010-02-16T03:51:18.203 に答える
0

本当に有効な方法が必要な場合は、メインページをページにし、nojs.htmJSを使用してすべてのコンテンツを非表示にしてからユーザーに表示し、すぐにjavascriptを使用して実際のメインページにリダイレクトします。

于 2010-02-16T03:46:30.227 に答える
0

ダグのソリューションが好きです。ただし、リダイレクトする必要がある場合は、仕様と標準はありますが、Webブラウザーの世界は汚く不完全な世界であることを覚えています。仕様で許可されているかどうかは、気になるブラウザのセットで機能するかどうかほど重要ではありません。

主要なサイトのソースコードを見てください...それらのほとんどは私が賭けることを検証しません:)

于 2010-02-16T05:25:12.893 に答える
0

どうですか:

noscript{
z-index:100;
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
min-height:1024px; background:#FFF;
}

と:

<noscript>
<p>Please <a href="no_js_instructions.php">enable Javascript</a> on your browser.</p></noscript>
于 2011-10-13T09:12:27.853 に答える