1

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

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

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

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

4

1 回答 1

3

JavaScript 目前不支持条件编译,因此我认为您需要编写自己的存根函数来包装诸如 execUnsafeLocalFunction 之类的函数。在该函数中,您将通过检查命名空间来测试该函数是否存在。就像是:

function callUnsafeFunction(func) {
    if (MSApp && MSApp.execUnsafeLocalFunction) {
        return MSApp.execUnsafeLocalFunction(func);
    } else {
        return func() 
    }
}

或者,您可以检查该函数是否存在于命名空间中,如果不存在,则添加您自己的同名函数作为传递,如下所示(我没有测试过这样的代码):

if (!(MSApp && MSApp.execUnsafeLocalFUnction)) {
    window.MSApp = {
        execUnsafeLocalFunction: function(func) {
            func();
        }
    };
}

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

于 2013-10-16T18:34:02.777 回答