2011-12-11 24 views
2

如何檢測到環境是來自Javascript的Windows 8 Metro應用程序?如何從Javascript中檢測Win8/Metro

更新:爲了澄清,我的Javascript代碼可以在任何瀏覽器上運行,也可以作爲Win8應用程序的一部分運行。由於Win8應用程序對JS代碼施加了安全限制,因此我想檢測代碼在Win8應用程序中運行的時間。

回答

2

回答自己:

一種方法來檢測,這是檢查一些MS特定的對象或命名空間的存在。其中之一是Windows。例如:

if (typeof Windows != "undefined") { 
    // Running in Win8 app 
} else { 
    // Running in a browser 
} 
+1

您也可以嘗試檢測WinRT命名空間(它們在JS中投影爲對象)的存在 - 最值得注意的是根「Windows」命名空間。 –

+0

有人可以看到什麼'({})。toString.call(Windows)'是?這可能是一個更強大的檢測。 –

0

我想你可以使用:

 
WorkerNavigator.useragent 

屬性來檢測它

+0

你到底有什麼建議?該屬性的存在對Win8/Metro來說是一個很好的測試,或者應該看一下useragent的內容?聽起來不可靠。 – Kyberias

+0

嗯,yea屬性測試比useragent相比更好一些 –

0

我用這個代碼:

var isWinJS = !!window.Windows && /^ms-appx:/.test(location.href);