获取有关操作系统的详细信息

时间:2014-06-04 08:14:53

标签: operating-system firefox-addon platform

我认为这很容易,但我无法解决这个问题。

如何判断是否使用Win7或WinXP?喜欢操作系统的详细信息。 Linux应该给出具体细节。 Mac OS版等。

我想从Services.appShell.hiddenDOMWindowwindow.navigator读取用户代理,但浏览器启动hiddenDOMWindow尚未加载。

现在我只能从WINNT获得:

Components.utils.import("resource://gre/modules/osfile.jsm")
console.log(OS.Constants.Sys.Name)

console.log(Services.appinfo.OS)
console.log的{​​{1}}提供了所有这些优点,如何在无法访问window.navigator的情况下获取此内容?

window

2 个答案:

答案 0 :(得分:2)

您可以使用系统信息服务。获取操作系统版本

Services.sysinfo.getProperty("version");

请咨询sources以获取所支持的属性。还要注意他们的平台特定含义(例如在Android上有versionkernel_version

答案 1 :(得分:1)

我发现其他一些方法是:

  • 然后在这里查看维基百科的Windows版本。 Wikipedia Windows Versions如果它是NT 5.1而不是它的WinXP

    var os_string = Cc["@mozilla.org/network/protocol;1?name=http"].getService(Ci.nsIHttpProtocolHandler).oscpu; //this is something like `Windows NT 6.3; WOW64` and you look for 6.3 which means Windows 8.1
    

修改

刚刚发现Cc["@mozilla.org/network/protocol;1?name=http"].getService(Ci.nsIHttpProtocolHandler)的{​​{1}}就像上面的导航器一样。

所以就这样:

userAgent它会为您Cc["@mozilla.org/network/protocol;1?name=http"].getService(Ci.nsIHttpProtocolHandler).userAgent提供Mozilla/5.0 (Windows NT 5.1; rv:30.0) Gecko/20100101 Firefox/30.0

以下是navigator.userAgent中的全部内容:

Cc["@mozilla.org/network/protocol;1?name=http"].getService(Ci.nsIHttpProtocolHandler)

对于mac,您的useragent line和oscpu line将告诉您有关操作系统的所有信息。 例如,在Mac OS X 10.9上,它会调出appName:"Mozilla" appVersion:"5.0" defaultPort:80 misc:"rv:33.0" oscpu:"Windows NT 6.3; WOW64" platform:"Windows" protocolFlags:76 scheme:"http" userAgent:"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0" 。你很高兴获得10.X

Intel Mac OS X 10.9在OSX 10.9和OSX 10.10.1上发出Services.sysinfo.getProperty("version");它发出13.4.0所以可能不是mac的准确方法,但它对windows有好处。对于10.10.1,useragent oscpu只有10.10,它没有显示.1