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

Operating system 获取有关操作系统的详细信息,operating-system,firefox-addon,platform,Operating System,Firefox Addon,Platform,我以为这很容易,但我想不出来 如何判断是使用Win7还是WinXP?比如操作系统的细节。Linux应该给出细节。Mac OS版本等 我想从Services.appShell.hiddenDOMWindow和window.navigator读取用户代理,但在浏览器启动时,hiddenDOMWindow尚未加载 目前,我只能从以下位置获取WINNT: Components.utils.import("resource://gre/modules/osfile.jsm") console.log(OS

我以为这很容易,但我想不出来

如何判断是使用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)

window.navigator的
console.log
提供了所有这些好东西,如何在不访问
window
的情况下获得这些

appCodeName:"Mozilla"
appName:"Netscape"
appVersion:"5.0 (Windows)"
battery:BatteryManager
buildID:"20140529161749"
cookieEnabled:true
doNotTrack:"yes"
geolocation:Geolocation
language:"en-US"
mimeTypes:MimeTypeArray
mozAlarms:null
mozApps:XPCWrappedNative_NoHelper
mozCameras:CameraManager
mozConnection:MozConnection
mozContacts:ContactManager
mozId:null
mozKeyboard:XPCWrappedNative_NoHelper
mozPay:null
mozPermissionSettings:null
mozPhoneNumberService:PhoneNumberService
mozPower:MozPowerManager
mozTCPSocket:null
onLine:true
oscpu:"Windows NT 5.1"
platform:"Win32"
plugins:PluginArray
product:"Gecko"
productSub:"20100101"
userAgent:"Mozilla/5.0 (Windows NT 5.1; rv:30.0) Gecko/20100101 Firefox/30.0"
vendor:""
vendorSub:""
__proto__:NavigatorPrototype

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

Services.sysinfo.getProperty(“版本”);

有关支持的属性,请参阅。还要注意其特定于平台的含义(例如,在Android上有
版本
内核版本

我发现其他一些方法可以做到这一点:

  • 然后在此处查看wikipedia以了解windows版本。如果它是
    NT5.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.nsichttpprotocolhandler)
具有与上述导航器类似的
userAgent

那就这样吧:

Cc[“@mozilla.org/network/protocol;1?name=http”].getService(Ci.nsithtpprotocolhandler).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.nsichttpprotocolhandler)

对于mac,您的用户代理行和oscpu行将告诉您有关操作系统的所有信息。 例如,在Mac OS X 10.9上,它会检测出
英特尔Mac OS X 10.9
。很高兴你得到了10.X


Services.sysinfo.getProperty(“版本”)
在OSX 10.9和OSX 10.10.1上推出了
13.4.0
,它推出了
14.0.0
,因此对于mac来说可能不是一种准确的方式,但对于windows来说却很好。对于10.10.1,用户代理oscpu仅为10.10,它没有显示.1

谢谢!我将此添加到MDN:中,并感谢您:)注意:
navigator.platform
不同于
Cc[“@mozilla.org/network/protocol;1?name=http”].getService(Ci.nsithtpprotocolhandler)。platform
第一个返回Win32,第二个返回Windows。在mac上,第一个返回
MacIntel
second-one rturns
Macintosh
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
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"