我认为这很容易,但我无法解决这个问题。
如何判断是否使用Win7或WinXP?喜欢操作系统的详细信息。 Linux应该给出具体细节。 Mac OS版等。
我想从Services.appShell.hiddenDOMWindow
和window.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
答案 0 :(得分:2)
您可以使用系统信息服务。获取操作系统版本
Services.sysinfo.getProperty("version");
请咨询sources以获取所支持的属性。还要注意他们的平台特定含义(例如在Android上有version
和kernel_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