用于检查Win8或iOS的条件语句

时间:2013-10-16 17:23:07

标签: windows winjs

我正在为多个设备编写HTML5 / JavaScript应用程序,但是在为Win8和iOS编写它时出现了问题。

由于Win8的严格安全性,我需要在名为execUnsafeLocalFunction.的WinJS函数中包含某些函数,特别是那些将HTML或div注入窗口的函数

当我在iOS上运行这个相同的应用程序时,它无法运行这些功能,因为WinJS不存在。

如何创建条件语句,以便检查运行应用程序的设备是Win8设备还是iOS?这样我可以告诉它运行 function foo 功能栏

1 个答案:

答案 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();
        }
    };
}

简而言之,条件检查是命名空间/函数的存在,因为我们没有条件编译。