2014-01-09 166 views
-2

我正在使用worklight 6.0。IBM Worklight 6.0 - Cordova onDeviceReady未觸發

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?

回答

0

此檢查在基於Worklight的應用程序中不需要。

正如您正確提到的那樣,Cordova與Worklight捆綁在一起;一旦您的應用成功啓動,deviceReady已經啓動(內部)。否則,你的應用程序不會開始工作。

應用程序啓動>科爾多瓦初始化>工作燈框架初始化>應用是「準備」


所以,你需要做的就是把你的實現代碼在common\yourApp.js(或任何你想要然後調用它) ,不包括deviceReady檢查。

例如,您會注意到,如果執行以下操作,它甚至會在第一次檢查devicReady時起作用。

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

如果使用文件系統爲例,這是你正在嘗試做的......我也做了以下內容,這對我來說工作正常。我只是followed the LocalFileSystem example from the Cordova File API page

  1. 新的項目和應用程序
  2. 加入了Android環境

    文件API是爲移動環境,而不是在你的PC瀏覽器預覽
    這是您看到錯誤的原因:LocalFileSystem is not defined。它與deviceReady無關。在common\testapp.js我已經添加了以下

  3. 冉的Android應用程序模擬器

  4. 在應用程序中,我得到了成功警報()

    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); 
    } 
    

在預覽Android環境時要做同樣的事情通過Worklight Console的MBS,您需要確保安裝了Java並且它在瀏覽器中處於活動狀態(查看Java小程序)。然後,您應該使用左側窗格中的文件菜單。

看到這些問題:

如果你是在Mac上,you need to use Java 6

+0

嗨伊丹,儘管我將相同的代碼放在我的app.js文件中,onDeviceReady沒有被解僱。 – user2967626

+0

@ user2967626,**你不需要它**。如果您的Worklight應用程序正在運行,則意味着deviceReady已被觸發。我的意思是在那裏放置你的實際實現代碼,而不是檢查deviceReady。再一次,你不需要這個檢查。這是在Worklight框架內部完成的。 –

+0

如果你打開一個新的問題,並在那裏問你實際上想要實現什麼以及哪些不適合你(而不是deviceReady部分),那可能會更好。 –

相關問題