inappBrowserを使用すると、システムブラウザを使用して外部URLをロードし、インアプローブに表示されないようにするにはどうすればよいですか?Cordova inappbrowserがシステムブラウザにURLをリダイレクトする
もっと詳しく
私は、しかし、私は、システムのブラウザに表示するポータル上の外部リンクがある、顧客ポータルサイトを表示するためにinappbrowserを使用しています。
外部リンクを検出し、外部リンクをシステムブラウザで開き、外部リンクを押す前にインアプリケーションブラウザに同じページが表示されていることを確認します。
loadstartイベントを使用してURLを検出してから、window.open(url、 '_system');を使用しています。システムブラウザを開きます。問題は、システムブラウザが閉じると、外部のページもインアプリケーションブラウザに表示されることです。
最初にシステムブラウザを読み込んだ後、私は表示したかったURLを使って、再度アプリケーションブラウザを初期化しました。これは問題ありませんが、すべてのセッション履歴が失われています。また、次回のボタンを押すと、アプリケーションブラウザが終了します。私が試した次のことを実行するスクリプト機能を使用していた
:
app.inAppBrowserRef.executeScript({
code: "window.open('" + overrideUrl + "', '_blank');"
}, function() {
//alert("Redirected!");
});
これは、システムのブラウザでリンクをロードし、システムブラウザを閉じたときに表示されたページが正しいです。問題は、表示されているビューがロードスタートコードを実行していないことです。そのため、同じ外部リンクをクリックすると、システムビューアではなく同じビューにロードされます。また、デバッグを入れても、私が見ているものがインアプローブにあるか、自分のコードがないという証拠は見当たりません。私もwindow.location = overrideUrlを実行しようとしましたが、これはうまくいきませんでした。
奇妙なことは、chromecustomtabプラグインを使用してURLを開き、システムブラウザではなく、executeScriptが必要に応じて機能することです。これは、システムブラウザが開いている間に実行スクリプトを実行することと関係しています。 Chromeがデバイスにインストールされていない場合は、システムブラウザをサポートする必要があります。
これは一般的な問題である必要がありますので、実際にそこに解決策があることを期待しています。
ありがとうございます!
更新のビットですが、まだ問題があります。システムブラウザで実行スクリプトを実行すると、すべての自分のinappbrowserイベント(loadstartなど)が機能しなくなります。システムブラウザを開くのを防ぐが、同じスクリプトコードを実行するためにwindow.open(url、 '_system')をコメントアウトすると、私のinappbrowserイベントは引き続き機能します。したがって、システムブラウザを開いた状態で実行スクリプトを実行すると問題が発生します。 – ee0jmt