1

単純なalert('test')アプリを実行しようとしていますが、イベントが発生していません。これは次のコードです。

function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

// Cordova is loaded and it is now safe to make calls Cordova methods
//
function onDeviceReady() {
    alert('omar');
}

HTML:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Hello World</title>
    </head>
    <body>
        <div class="app">
            <h1>AAAA</h1>
        </div>
        <script type="text/javascript" src="cordova-2.2.0.js"></script>
        <script type="text/javascript" src="js/index.js"></script>

    </body>
</html>

どうしてこれなの?

4

4 に答える 4

6

正しい方法は、イベントリスナーを追加する前に、ドキュメントが完全にロードされていることを確認することです。

例:

HTML:

<body onload="onLoad">

JS:

function onLoad() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady() {
   //anything you want done after deviceready has fired
}

jQueryを使用する$(document).ready()と、代わりに使用できます<body onload="onLoad()">

例:

$(document).ready() {
    document.addEventListener("deviceready", onDeviceReady, false);
}

function onDeviceReady() {
   //anything you want done after deviceready has fired
}
于 2012-11-09T17:01:23.073 に答える
0

私はむしろ非同期のアプローチを取りたいと思います:

bindEvents: function () {
    var me = this;

    document.addEventListener('deviceready', function () {
        me.onDeviceReady();
    }, false);

    $(document).ready(function () {
        me.onDocumentReady();
    });
},

documentReady: false,
onDocumentReady: function () {
    this.documentReady = true;
    this.checkReady();
},

deviceReady: false,
onDeviceReady: function () {
    this.deviceReady = true;
    this.checkReady();
},

checkReady: function (id) {
    if (this.documentReady && this.deviceReady) this.load();
},

load: function () {
    // do stuff
}

このようにして、イベントが発生した後にハンドラーをアタッチするリスクを回避できます。

于 2016-01-25T02:46:42.897 に答える
0

これは、Cordovaアプリ(iOSおよびAndroidでテスト済み)および通常のWebページで機能します。ライブラリ(jQuery)は必要ありません。

// Use onDeviceReady if we run in Cordova
window.addEventListener('load', function(){
    if (window.Cordova) {
        document.addEventListener('DeviceReady', bootstrap, false);
    } else {
        bootstrap();
    }
}, false);

Cordovaのドキュメントには、DeviceReadyイベントは見逃せないように作成されていると記載されています。デバイスの準備ができていても、ハンドラーが呼び出されます。

于 2016-02-21T12:14:13.230 に答える
-2

()の最後に置きますonDeviceReady

onDeviceReady()

これが正しいかどうか教えてください、ブラウザでテストするときにうまくいきました

于 2016-08-23T08:22:06.293 に答える