1

我知道这很简单,但我似乎无法让它发挥作用。当页面加载时,它会检查浏览器。如果它的 chrome 我希望它隐藏一个 div,但如果它有任何其他内容则显示它。

它检测到浏览器正常,因为我使用警报进行了检查,但隐藏位没有。你能帮我吗

function browserTest() {
    var browser = /Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent);
    if (browser) {
        document.getElementById("chromeBox").style.visibility = "hidden";
        //alert("chrome");
    }
    else {
        document.getElementById('chromeBox').style.visibility = 'visible';
        //alert("not chrome");
    }
}
4

3 回答 3

1

非常感谢大家。它现在可以工作了,只需要在 div 之后调用该函数。我是 javascript 的新手,所以我仍然会犯这样的基本错误。

谢谢

于 2013-01-18T10:33:07.240 回答
1

似乎我们无法弄清楚您的 DOM 会发生什么,所以这里有一个例子:http: //jsfiddle.net/mgechev/uwc3B/2/

这是代码:

JavaScript

function browserTest() {
    var browser = /Chrome[\/\s](\d+\.\d+)/.test(navigator.userAgent);
    if (browser) {
        document.getElementById("chromeBox").style.visibility = "hidden";
        //alert("chrome");
    }
    else {
        document.getElementById('chromeBox').style.visibility = 'visible';
        //alert("not chrome");
    }
}
browserTest(); //should be called on DOM ready

HTML

<div id="chromeBox">
It's not Chrome!
</div>

CSS

#chromeBox {
  width: 100px;
  height: 100px;
  background: #ccc;
  position: absolute;
}

您应该browserTest在正文末尾或准备好 DOM 时调用。

于 2013-01-18T10:15:16.210 回答
1

您可能在这里遇到一些问题:

1)browserTest在 div 实际加载之前执行(<head>例如,如果它在代码如下的部分中执行):

<head>
  <script>
     function browserTest() { .... }
     browserTest(); - div is not loaded here yet and getElementById will return nothing.
  </script>

要解决这个问题 - 将该脚本部分放在 chromeBox div html 标记之后或在 onload 事件中执行 browserTest(这将保证 div 已经加载并且 getElementById 会找到它):

<head>
  <script>
     function browserTest() { .... }         
  </script>
....
</head>
<body onload="browserTest()">
  ....

2)检查您的 div 是否真的有 ID chromeBox。ID 区分大小写,所以document.getElementById("chromeBox") 找不到<div id="ChromeBox">

请记住,visibility:hidden 将使 div 不可见,但仍会为其保留空间。也许你应该更好地使用 style.display = "none"/style.display = "block"

另外,学习如何使用开发者工具。所有浏览器都有。对于 firefox,您可能需要安装 Firebug。只需使用 F12 调用它并检查控制台以查看那里是否显示任何错误。

于 2013-01-18T10:18:34.923 回答