次の関数を使用して、コードで ChildBrowser を問題なく使用しています。
var app = {
ready: false,
initialize: function() {
this.bind();
},
bind: function() {
document.addEventListener('deviceready', this.deviceready, false);
},
deviceready: function() {
app.report('deviceready');
app.report('Installing child browser');
app.ready = true;
//ChildBorwser init
cb = ChildBrowser.install();
},
report: function(id) {
console.log("report:" + id);
}
};
var layout = {
showUrl: function(url) {
if(app.ready == true){
window.plugins.childBrowser.showWebPage(url);
event.preventDefault();
event.stopImmediatePropagation();
return false;
}
else { document.location.href = url; return false; }
},
}
しかし、次のように、JavaScript の「レイアウト」オブジェクトの外部で関数を呼び出そうとすると、Xcode エラーが発生します。
$('.text a').on('click', function(e) {
e.preventDefault();
var thisUrl = $('.text a').attr('href');
layout.showUrl(thisUrl);
});
シミュレーターとデバイスの両方で発生する Xcode エラーは次のとおりです。
* キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: 'アプリケーションがアクティブなコントローラーをモーダルに提示しようとしました。* First throw call stack: (0x167012 0x25a0e7e 0x48b721 0x48c777 0x48c7b7 0x35fd 0x6d914 0x6d147 0x6cd2d 0x6ce96 0x6cdd3 0x25b46b0 0x113c035 0xeaf3f 0xea96f 0x10d734 0x10cf44 0x10ce1b 0x33d17e3 0x33d1668 0x3a265c 0x283c 0x2795) libc++abi.dylib: terminate called throwing an exception.