1

次のコードを使用すると、デスクトップ ブラウザーで新しいウィンドウを開くことができます。

            var thisWin = window;
            var oauthWin = thisWin.open(data, 'twitter-oauth-window', 'location=0,status=0,width=800,height=400');
            var lastUrl = oauthWin.location.href;
            var meh = true;
            var oauthInt = thisWin.setInterval(
              function()
              {
                if (meh)
                {
                  alert(
                    '\noauthWin.closed: ' + oauthWin.closed +
                    '\noauthWin.location: ' + oauthWin.location +
                    '\nthisWin.closed: ' + thisWin.closed +
                    '\nthisWin.location: ' + thisWin.location +
                    '\noauthWin===thisWin: ' + (oauthWin === thisWin));
                  meh = false;
                }
                // do more stuff here
              }
            );

アラート内のデバッグ出力:

 oauthWin===thisWin: false

これは、あるべき姿です。ただし、PhoneGap 内で同じコードを実行すると、次のようになります。

 oauthWin===thisWin: true

これは、PhoneGap が同じウィンドウで新しい URL を開いて、現在の HTML ドキュメントを置き換えたことを示しています。

新しい URL を個別に開き、特定の条件が満たされたときに閉じて、古い URL に戻せるようにしたいと考えています。

これは PhoneGap で実現できますか?

ありがとう!

4

1 に答える 1

0

PhoneGap 2.3 以降では、Mobile Safari で URL を開くことができませんでした。_blank の使用は機能せず、window.open(url, '_blank') を試しましたが、これで InAppBrowser プラグインを使用して URL が開きます (これはかなりひどいものです)。あれがプラグインを使っているのは面白いと思ったので、iOS アプリで URL を開く標準的な方法を使用して URL を開くプラグインを作成することにしました。この要点でコードを確認/取得できます: https://gist.github.com/typeoneerror/5097118 。

とても簡単です。私の例では、「_blank」というクラスを持つリンクを jQuery で接続し、プラグイン呼び出しでそれらの URL を開きました。

// execute the plugin called OpenUrl, signature:
// exec(successCallback, errorCallback, pluginName, pluginMethod, params)
cordova.exec(success, error, "OpenUrl", "openUrl", [url]);

必要なプラットフォームごとにプラグインを簡単に書き直すことができると確信しています。これは iOS 固有のものです。

于 2013-03-06T06:26:37.163 に答える