1

エラーがどこにあるのかわかりません。

<!DOCTYPE html> <html> <head>
        <script type="text/javascript">
            //http://stackoverflow.com/questions/10251149/using-javascript-to-detect-google-chrome-to-switch-css
            //provera brosera
            function check_chrome_ua() {
                var ua = navigator.userAgent.toLowerCase();
                var is_chrome = /chrome/.test(ua);
                alert("func check_chrome_ua() " + is_chrome);
                return is_chrome;
            }
            //promena nadpisa
            function check() {
                //alert("check1");

                var check = check_chrome_ua();
                alert("var check " + check + "; func check_chrome_ua() " + check_chrome_ua());

                if (check == "false") {
                    alert("change text");
                    document.getElementById("opomena").style.color = "red";
                    document.getElementById("opomena").innerHTML = 'Warning you are not using Google Chrome';
                }
            }
        </script>
        </head>
        <body onmousemove="check()">
    <div id="opomena">Thank you for using Google Chrome.</div>

</body>
 </html>

Google Chromeのポップアップはtrueと表示され、Firefoxのポップアップはfalseと表示されます。Firefoxでは「テキストの変更」は表示されません。varチェックはfalseです。

よろしくお願いします

4

2 に答える 2

4

変化する

if (check == "false") {

if (!check) {

また

if (check == false) {

ブール値を本当に確認したい場合は、false

で呼び出すregexptestメソッドはブール値を/chrome/.test(ua)返しますが、check == "false"そのブール値を文字列と比較しています。2つは等しくありません。

JavaScriptでは、文字列をオブジェクトと比較する場合==許容eqされますが、Perlの演算子ほど許容されません。

  • 0 == false
  • false == false
  • "false" == [false]
  • false != "false"
  • 0 != "false"

試して使用するのは良い習慣であり、!==プリミティブ===値を比較するための明確に定義された演算子です。

于 2012-09-05T00:03:18.210 に答える
1

「false」(文字列)ではなく、ブール値falseをチェックする必要があります。

十分なだけif (!check)です(またはより冗長なバージョンif (check == false))。

于 2012-09-05T00:05:08.440 に答える