IBM Worklight 6.0 - Cordova onDeviceReady未触发

时间:2014-01-09 09:00:21

标签: cordova ibm-mobilefirst

我正在使用worklight 6.0。

deviceready事件未触发。我在MBS中测试了这个,在iOS和Android中都在Firefox和Chrome中测试。

以下是我在initoptions.js文件中使用的代码:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
     alert("device Ready")
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
警告永远不会被解雇。

我认为使用cordova 2.6版本的worklight 6.0,我是否需要更改任何其他版本的cordova.js?

1 个答案:

答案 0 :(得分:0)

基于Worklight的应用程序不需要此检查。

正如您所正确提到的,Cordova与Worklight捆绑在一起;您的应用成功启动后,deviceReady已经解雇(内部)。否则,您的应用无法开始使用。

应用启动> Cordova初始化> Worklight框架初始化>应用程序已“准备就绪”


所以你需要做的就是简单地将你的实现代码放在common\yourApp.js(或者你想要的任何地方,然后调用它),而不是deviceReady检查。

例如,您会注意到,如果执行以下操作,它甚至可以首先检查devicReady

function wlCommonInit() {
    alert (device.cordova);
}

如果要使用fileSystem示例,这是您要尝试的...我已经完成了以下操作,它对我来说正常。我只是followed the LocalFileSystem example from the Cordova File API page

  1. 新项目和申请
  2. 添加了Android环境

    File API适用于移动环境,而不适用于 PC浏览器中的预览。
    这就是您看到错误的原因:LocalFileSystem is not defined。它与deviceReady无关。

  3. common\testapp.js我添加了以下内容

  4. 在Android模拟器中运行应用
  5. 在应用程序中,我获得了成功警报()

    function wlCommonInit(){
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
    }
    
    function onFileSystemSuccess(fileSystem) {
       alert("*** Success *** File system name is: " + fileSystem.name);
    }
    
    function fail(evt) {
        alert("*** Fail *** Error code is: " + evt.target.error.code);
    }
    
  6. 要在通过Worklight Console的 MBS 预览 Android环境时执行相同的操作,您需要确保已安装Java且在浏览器中处于活动状态(至查看Java小程序)。然后,您应该使用左窗格中的文件菜单。

    请参阅以下问题:

    如果您使用的是Mac,you need to use Java 6