質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

3回答

6780閲覧

inappbrowserで外部リンクを押した時、外部ブラウザーが開かない

monaca_kps

総合スコア4

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2018/07/03 05:57

Webviewで外部のサイトを表示するアプリを開発していて、
inappbrowserプラグインを使用しています。

現在問題になっているのはinappbrowserで外部リンクを開いた時、
外部のブラウザ(Chromeとか)が開かず、inappbrowser内で遷移しちゃう所です。

この問題を解決すべく、二つの方法を試して見たんですが、
未だに解決にはなってない状態です。

一つ目はexecuteScriptでスクリプトを差し込んで、
aリンクを無効化してシステムブラウザーで開く方法で、

<script> $(document).on('click', 'a', function (event) { event.preventDefault(); if (遷移先===外部) { //システムブラウザで開く window.open('遷移先', '_system'); } else { location.assign('遷移先') } }); </script>

上記のようなコードで試してみた所、
前と変わりなく外部のブラウザ(Chromeとか)が開かず、
inappbrowser内で遷移しちゃいます。

二つ目はloadstartというURLがロードされる時の
inappbrowserのイベントで新しいinappbrowserのインスタンスを開く方法で、

}).addEventListener('loadstart', function(event) { if((event.url).indexOf('apache.org') === -1) { window.open(event.url, '_system'); ref.executeScript({ code: 'window.history.back();' }, null); } })

上記のようなコードで試してみた所、
外部のブラウザ(Chromeとか)は開くようになりましたが、
元のinappbrowserも外部サイトの方に遷移しちゃいます。

一週間くらい苦戦を続けた後、
inappbrowserの中で外部ブラウザーを開くのは元々
無理じゃないか?と思うようになってきました。

inappbrowserで外部リンクを開く方法、
もしくはinappbrowser以外で実現できる方法について
教えて頂けますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

  1. 外部ブラウザで開く

WebIntent プラグイン ( Android 向け ) | Monaca Docs

JS

1 function startActivity() { 2 window.plugins.webintent.startActivity({ 3 action: window.plugins.webintent.ACTION_VIEW, 4 // url: 'geo:0, 0?q=' + 'dummy address'}, 5 url: 'http://www.asial.co.jp'}, 6 function() {}, 7 function() {alert('Failed to open URL via Android Intent')} 8 );

HTML

1<input type="button" onClick ="startActivity()" value ="startActivity()" /><br>

2.locatstorageを使って、inAppBrowserでクリックしたurlをWebView側で検知する。
MonacaでWebサイトをアプリ化する事始め | モナカプレス

JS

1<script> 2 $(document).on('click', 'a', function (event) { 3 event.preventDefault(); 4 if (遷移先===外部) { 5 //'遷移先'をlocalStorageに書く 6 } else { 7 location.assign('遷移先') 8 } 9 }); 10</script>

この合わせ技で行けませんか?

投稿2018/07/11 10:34

oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Androidでリンクを強制的にChromeで開く方法

addEventListener('loadstart')でinappbrowserの<a>のリンク先をintentに書き換えるのは如何でしょうか?

投稿2018/07/12 02:30

oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

なにかボケていたようです。
inappbrowser

_systemでwindow.openしてます?

target: URL の読み込み先として使用するブラウザーの種別。任意のパラメーターです。デフォルトでは、_self となります。 (String) _self: ホワイトリストに対象の URL が登録されている場合には、Cordova WebView を開きます。それ以外の場合には、InAppBrowser を開きます。 _blank: InAppBrowser を開きます。 _system: システム標準の Web ブラウザー ( system’s web browser ) を開きます。

投稿2018/07/03 06:23

編集2018/07/11 10:26
oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bi_tsu

2018/07/11 08:24

横からすみません。 質問者さんの意図している挙動は 1.アプリ内での外部サイトの表示にInAppBrowserを使用 2.InAppBrowser内での外部リンクへの遷移は外部ブラウザで開きたい ということではないでしょうか。
oikashinoa

2018/07/11 10:35

bi_tsuさん 指摘ありがとうございました。焦った〜。 おかげて良いアイディアが出ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問