この2つのPhoneGapプラグイン「BarcodeScanner」と「ChildBrowser」(iOSアプリ内、XCode4とPhoneGap2.0を使用)の使用で問題が発生しています。
アプリのUIに[スキャン]ボタンがあります。ユーザーがこのボタンをクリックすると、バーコードスキャナーが起動します。
そのため、バーコードスキャナーコールバックのSuccess関数で、スキャンから復元されたURLを新しいChildbrowserウィンドウ(アプリ内)で開く必要があります。
ただし、コンソールに「Opening Url: http ://fr.wikipedia.org/」と表示されている間は、新しいChildbrowserウィンドウが開かれることはありません(たとえば)。
これが私のJSのコード部分です:
$("#btnStartScan").click(function() {
var scanBarcode = window.plugins.barcodeScanner.scan(
function(result) {
if (!result.cancelled){
openUrl(result.text);
}
},
function(error) {
navigator.notification.alert("scanning failed: " + error);
});
});
function openUrl(url)
{
try {
var root = this;
var cb = window.plugins.childBrowser;
if(cb != null) {
cb.showWebPage(url);
}
else{
alert("childbrowser is null");
}
}
catch (err) {
alert(err);
}
}
たとえば、Confirmアラートコールバック内でopenURL()関数を呼び出すと、すべて正常に機能します。たとえば、次のようになります。
if (!result.cancelled){
navigator.notification.confirm("Confirm?",
function (b) {
if (b === 1) {
openUrl(result.text);
}
},
'Test',
'Yes, No');
}
ただし、確認アラートなどを使用せずに、スキャンの直後にChildBrowserウィンドウを起動する必要があります。
誰かがこれを解決する方法を知っていますか?