2015-05-27 1 views
1

Я разрабатываю библиотеку JS, которая может использоваться как в приложениях Windows Store (WinJS), так и в обычных приложениях HTML/JS. Одна из зависимостей, которые я использую (загружая их динамически), имеет два разных SDK: один для приложений WinJS и один для «обычных» веб-сайтов, поэтому мне нужно знать, запускаюсь ли я в приложении WinJS для загрузки правильный.Проверьте, работает ли код в приложении WinStore (WinJS)

Я могу попытаться выяснить, существует ли какая-то определенная Windows-библиотека (что-то вроде кода ниже), но мне интересно, есть ли «чистый» способ выяснить среду, в которой работает код. Есть ли способ сказать это?

function isWinJS() { 
    return typeof Windows === 'object' && 
     typeof Windows.UI === 'object' && 
     typeof Windows.UI.Popups === 'object' && 
     typeof Windows.UI.Popups.MessageDialog === 'function'; 
} 
+0

Как можно «Windows.UI» быть объектом и функцией? – Dendromaniac

+0

@ Dendromaniac, исправлено это, это была ошибка копирования/вставки. Спасибо, что указали это. – carlosfigueira

ответ

2

Определение пространства имен - это то, как WinJS определяет, работает ли он в Windows или в Интернете. Я предлагаю взглянуть на то, как он подходит к этим вопросам на систематической основе. Вы можете сделать это с кодом на https://github.com/winjs/winjs (текущие версии) или вместо этого взглянуть на WinJS 1.0 или 2.0, как используется только в Windows, потому что обнаружение там несколько проще. В этих версиях обнаружение было необходимо, поскольку WinJS можно было загружать в веб-просмотр или веб-контекст в приложении, где WinRT недоступен. Один из примеров, о котором я знаю, - это реализация объекта SessionState WinJS.

+0

Спасибо, что указало мне нужное место. 'WinJS.Utilities.hasWinRT' была функцией, которую я искал. – carlosfigueira

Смежные вопросы