Onsen UIはハイブリッドアプリ開発に最適です。この章では、Cordovaアプリを開発する時の機能について解説します。
Cordova APIはdeviceready
イベントの後で呼び出すことができます。Onsen UIの場合、ons.ready()
関数を使ってイベントをキャッチすることができます。
ons.ready(function() {
// devicereadyイベントが呼ばれました
// Cordova APIを呼び出すことができます
});
Android端末で「戻る」ボタンが押されたときに、Cordova側ではbackbutton
イベントが呼ばれます。このイベントはCordovaが呼び出すため、cordova.js
ファイル、または同等の処理を行うファイル(Monacaであればloader.js
)を事前に読み込む必要があります。
デスクトップブラウザーではbackbutton
のイベントをシミュレートするためにESCキーをご利用いただけます。
Onsen UIでは、端末側の戻るボタンが押されたときの挙動を、デフォルトで設定している要素もあります。
cancelable
属性を指定している場合にダイアログを閉じます。ただしModalとToastは対象外です。多くのアプリにおいて上記の対応で十分かと思いますが、Onsen UIではグローバルハンドラーの挙動をさらにカスタマイズできます。カスタマイズする場合には、ons
オブジェクトが提供するメソッドを使用します。
// 無効化、または、有効化
ons.disableDeviceBackButtonHandler();
ons.enableDeviceBackButtonHandler();
// 新規ハンドラーの登録
ons.setDefaultDeviceBackButtonListener(function(event) {
ons.notification.confirm('Do you want to close the app?') // ユーザー側に確認します。
.then(function(index) {
if (index === 1) { // OK が押された場合
navigator.app.exitApp(); // アプリを終了します。
}
});
));
});
これとは別に、前述の要素とons-page
要素では戻るボタンのハンドラーの挙動を制御することもできます。
var myNavigator = document.getElementById('my-navigator');
myNavigator.onDeviceBackButton.disable(); // バックボタン用のハンドラーを無効にします。
myNavigator.onDeviceBackButton.enable(); // バックボタン用のハンドラーを有効にします。
myNavigator.onDeviceBackButton.isEnabled(); // 有効化されている場合、true を返します。
myNavigator.onDeviceBackButton.destroy(); // 現在のハンドラーの登録を解除します。
var page = myNavigator.topPage;
page.onDeviceBackButton = function(event) {
console.log('Hardware back button!');
event.callParentHandler(); // 親のハンドラーを呼び出します ( この例ではnavigatorのハンドラーとなります )。
};
このハンドラーに渡されるevent
オブジェクトには、event.callParentHandler()
メソッドが用意されています。