2

我正在开发一个支持 Android、BlackBerry、iphone 和 Windows Phone 7的电话间隙应用程序。互联网连接检查仅在 Windows Phone 7 中不起作用。每个平台都有单独的 cordova.js 文件,所以我将这些文件保存在具有相应名称的不同文件夹中,如 android、iphone 等。我根据应用程序正在加载的设备类型动态加载 js 文件,比如如果该应用程序在Android中运行我正在加载 android/cordova.js。它在除Windows Phone之外的所有平台上都可以正常工作。如果我直接在 head 标记中加载 js 文件,则连接检查正在工作在 Windows Phone 7 中,动态加载 js 文件不起作用。我将在下面给出代码片段(文件路径是正确的,我已经检查过了)

<script type="text/javascript" charset="utf-8">
function test() {
    $('head').append('<script type="text/javascript" src="' + filePath + '"' + '></' + 'script>');
}
test();
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){                               
    offLineModeTest();
}           
function offLineModeTest(){
    try {
        var networkState = navigator.network.connection.type;
        if (Connection.NONE == networkState || Connection.UNKNOWN == networkState) {
            //do something......
        }
    }catch(err){

    }
}
</script>
4

2 回答 2

1

这是由于在 IEMobile 中以这种方式加载时不执行 javascript 的方式。

没有解决此问题,但等待操作系统更新或直到 Cordova 的所有版本都使用相同的 js 文件。

作为替代方案,您是否可以尝试始终包含 hte WP7 版本,然后将其删除并在其他平台上加载适当的版本。

于 2012-05-31T09:48:15.257 回答
1

对 Cordova 的建议是始终将其直接加载到 HEAD 标记中,并将其作为您加载的第一个脚本。如果您不这样做,您将面临事件无法正确触发的风险,因为它需要连接到某些加载事件本身。

为什么不构建您的项目,以便您可以使用相对路径静态加载特定于平台的 JS 文件,而不是动态加载?这就是我用于我的 Android 和 iOS 应用程序的方法。

编辑

这个答案显示了 JS 文件的文件结构和相对包含。

于 2012-05-31T10:18:31.143 回答