4

Phonegap 1.7 の Childbrowser プラグインは初回のみ開くことができます。Phonegap 1.7 と Childbrowser を使用しています。初めての子ブラウザのみ動作しています。Childbrowser を閉じた (完了ボタンを押した) 後、開こうとしても開きません。

私のコードはこれです:

$("a[target=_blank]").bind('click', function(e) {
  e.preventDefault();
  var thisUrl = $(this).attr('href');
  cb.showWebPage(thisUrl);
  alert("click");
}); 

リンクをクリックすると、Childbrowser がポップアップしてページが表示されます。「完了」をクリックして戻ります。しかし、リンクまたは別のリンクをクリックすると、Childbrowser はもうポップアップしませんが、「クリック」というアラートが毎回表示されます。

psここからChildbrowserプラグインをダウンロードしました

4

3 に答える 3

3

jQuery Mobile 1.1.1 と併せて、Cordova 2.0.0 でもこの問題が発生しました。リンクを設定するコードは次のようになります。

$(document).bind("pageinit", function() {
  onDeviceReady();
});
function onDeviceReady(){
  var root = this;
  cb = window.plugins.childBrowser;
  if (cb != null) {
    $('a[target="_blank"]').click(function(event){
      cb.showWebPage($(this).attr('href'));
      event.preventDefault();
    });
  }
}

注:pageinitイベントは通常と同じです$(document).ready()が、jQuery Mobile 用です。

これにより、ChildBrowser は最初のリンク クリックで開きましたが、閉じた後は開きませんでした。修正するために、次の 2 行を の後に追加しましたevent.preventDefault();

event.stopImmediatePropagation();
return false;

それは私のためにそれをしました!

于 2012-09-07T05:03:09.940 に答える
2

https://github.com/phonegap/phonegap-plugins/blob/master/iPhone/ChildBrowser/を使用しても同じ問題が発生しました。

以下に示すように、ChildBrowser.jsをハッキングして4行にコメントを付けて解決しました。2つのメソッドが呼び出されているため、何らかの競合が発生する可能性があることに気付きました。それがお役に立てば幸いです。

ChildBrowser.prototype.showWebPage = function(loc) { 
//  if (typeof PhoneGap !== "undefined")
//  {
//      PhoneGap.exec("ChildBrowserCommand.showWebPage", loc);
//  }
    if (typeof Cordova !== "undefined")
    {
        Cordova.exec("ChildBrowserCommand.showWebPage", loc);
    }
};
于 2012-05-29T13:51:24.600 に答える
1

私はコルドバ1.9でも同じ問題を抱えています。

私が使用したプラグインのバージョンでは、showWebPage 関数のコードが異なります。

// Show a webpage, will result in a callback to onLocationChange
ChildBrowser.prototype.showWebPage = function(loc)
{
    cordovaRef.exec("ChildBrowserCommand.showWebPage", loc);
};

子ブラウザが失敗すると、javascript の「クリック」機能が立て続けに 2 回呼び出されることをログで確認しました。最初のクリックで発生する場合もあれば、5 ~ 6 回後に発生する場合もあります。

2012-07-27 09:27:12.155 XX[10562:707] [INFO] JS :: Should open in childBrowser
2012-07-27 09:27:12.158 XX[10562:707] Opening Url : http://www.google.co.uk/
2012-07-27 09:27:12.160 XX[10562:707] [INFO] JS :: Should open in childBrowser
2012-07-27 09:27:12.161 XX[10562:707] *** WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: <NSInvalidArgumentException> Application tried to present modally an active controller <MainViewController: 0x157e50>.

クリックされたボタンからクリック イベントを削除し、childBrowser.onClose イベントに再適用しようとしましたが、これは子ブラウザーのクラッシュの問題を解決したようです。

于 2012-07-27T08:38:10.637 に答える