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 上的弹出窗口说是真的,在 Firefox 上说假的弹出窗口“更改文本”不会在 Firefox 中显示,但 var 检查是假的。

提前感谢您的建议

4

2 回答 2

4

改变

if (check == "false") {

if (!check) {

或者

if (check == false) {

如果您真的想检查布尔值,false.

您调用的正则表达式test方法/chrome/.test(ua)返回一个布尔值,但check == "false"将该布尔值与字符串进行比较。两者不相等。

在 JavaScript 中,在将字符串与对象进行比较时==允许的,但不如 Perl 的eq运算符那么允许。

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

尝试使用哪些是定义明确的运算符来比较原始值是一个好!==习惯===

于 2012-09-05T00:03:18.210 回答
1

您必须检查布尔值是否为假,而不是“假”(它是一个字符串)。

只有if (!check)就足够了(或更详细的版本if (check == false))。

于 2012-09-05T00:05:08.440 回答