0

私は最近、エージェントが JavaScript を無効にしている場合にメッセージを表示するための優雅でシンプルな方法を発見しました。

モバイルサファリで試してみましたが、うまくいきません。そうしない理由はありますか?コードを書くときは、次のことを考慮しました。

  1. マークアップ/DOMは実際にロード/登録しているので、divの終了タグの後にscriptタグを付けます
  2. すぐに機能しない理由は何でもいいので、 setTimeout 関数を使用して 100 ミリ秒待機させました。
  3. 古き良きdomルックアップとスタイル変更がうまく/正しく実行されなかった場合に備えて、jqueryを使用しました

私のコード:

<div id="enable-js">
        <div id="content-container">
            <div id="text_wrapper">
                <p>For the best experience, please <a href="http://www.activatejavascript.org/">enable
                    javascript</a>.
                    If your browser is not capable of using javascript,
                    please considering getting a <a href="http://alternativebrowseralliance.com/browsers.html">better
                        browser</a>.
                </p>
            </div>
        </div>
    </div>
    <script type="text/javascript">
        (function() {
            setTimeout(function() {
                $('#enable-js').hide(); //hide area if scripts enabled
            }, 100);
        })();
    </script>

よろしくお願いします。

編集:

問題が Webkit にないことを確認しました。また、div の終了タグの後にではなく、自己呼び出しの匿名関数で開始したり、window.onload に非表示のコードを配置したりしても、違いはありません。

EDIT2:

document.getElementById を実行し、display を none に設定しても機能しないことを確認しました! 何が起こっている...

4

2 に答える 2

0

load() イベントを使用してみてください。それが機能しない場合は、 $(document).ready() を使用すると、ほぼ確実に目的が達成されます。

コンピューターで Webkit ブラウザーを使用してみて、Webkit の問題ではないかどうかを確認してください。

于 2011-08-29T06:48:55.503 に答える
0

編集:まったく新しいアイデア。

モバイル サファリがデスクトップ jquery をサポートしていない可能性があります。

jQuery モバイルを試すこともできます。またはこれ:

    (function() {
        setTimeout(function() {
            $('#enable-js').css({'display':'none'}); //hide area if scripts enabled
        }, 100);
    })();
于 2011-08-29T07:03:13.060 に答える