如何显示基于操作系统的HTML元素?

时间:2016-03-23 14:34:29

标签: javascript html wordpress

这是我到目前为止所拥有的。基本上我们有一个内部网站,为Mac用户使用AFP链接,为PC用户使用Windows IE风格链接。我们过去曾单独维护这些页面,但我试图将它们统一起来。我使用带有ID" brandsmac"的div s和" brandspc"并试图隐藏每种类型用户不必要的部分。当我运行这个页面时,我的页面又回来了。要在这里抛出另一个扳手,这是一个带有纯HTML首页的Wordpress站点。这是头版。我在这里发现了类似的帖子,其中很多都有帮助,但我遇到了障碍。提前谢谢。

function loadBrandsPage() {
    var OSName="Unknown OS";
    if (navigator.appVersion.indexOf("Win")!=-1) { 
        OSName="Windows";
    } else {
        OSName="MacOS";
    }
    if(OSName == "Windows") {
        document.getElementById("brandsmac").style.display = 'none';
        document.getElementById("brandspc").style.visibility="visible"; 
    }
    if(OSName == "MacOS") {
        document.getElementById("brandsmac").style.visibility="visible";
        document.getElementById("brandspc").style.display = 'none';
    }
}

2 个答案:

答案 0 :(得分:0)

您正在使用CSS displayvisibility的混合物。如果您将行document.getElementById("brandspc").style.visibility="visible";更改为document.getElementById("brandspc").style.display="block";,它就会正常工作。

我假设你已经开始隐藏这两个元素(#brandspc#brandsmac)和display: none;所以试图更改visibility它不会产生任何结果。

display: none :从DOM中删除该元素。

visibility: hidden :隐藏用户的元素,它会保留元素的间距。

如果你想在页面加载时发生这种情况(如评论中所示),则可以使用自动调用功能。您只需使用现有函数并将其包装在括号中:

(function loadBrandsPage() {
    var OSName="Unknown OS";
    if (navigator.appVersion.indexOf("Win")!=-1) { 
        OSName="Windows";
    } else {
        OSName="MacOS";
    }
    if(OSName == 'Windows') {
        document.getElementById("brandsmac").style.display = 'none';
        document.getElementById("brandspc").style.display="block"; 
    }
    if(OSName == 'MacOS') {
        document.getElementById("brandsmac").style.display="block";
        document.getElementById("brandspc").style.display = 'none';
    }
})();

我已经更新了我的小提琴以反映这一点。

more info

Here's a demo of it working with the above changes

答案 1 :(得分:-1)

您可以通过这种方式找到操作系统:

os = navigator.platform;