我正在为多个设备编写HTML5 / JavaScript应用程序,但是在为Win8和iOS编写它时出现了问题。
由于Win8的严格安全性,我需要在名为execUnsafeLocalFunction.的WinJS函数中包含某些函数,特别是那些将HTML或div注入窗口的函数
当我在iOS上运行这个相同的应用程序时,它无法运行这些功能,因为WinJS不存在。
如何创建条件语句,以便检查运行应用程序的设备是Win8设备还是iOS?这样我可以告诉它运行 function foo 或功能栏。
答案 0 :(得分:3)
JavaScript目前不支持条件编译,因此我认为您需要编写自己的存根函数来包装像execUnsafeLocalFunction这样的函数。在该函数中,您将通过检查命名空间来测试函数是否存在。类似的东西:
function callUnsafeFunction(func) {
if (MSApp && MSApp.execUnsafeLocalFunction) {
return MSApp.execUnsafeLocalFunction(func);
} else {
return func()
}
}
或者,您可以检查命名空间中是否存在该函数,如果没有,则添加您自己的与passthrough同名的函数,类似于此(我还没有测试过这样的代码):
if (!(MSApp && MSApp.execUnsafeLocalFUnction)) {
window.MSApp = {
execUnsafeLocalFunction: function(func) {
func();
}
};
}
简而言之,条件检查是命名空间/函数的存在,因为我们没有条件编译。