質問編集履歴

1 一部記載に誤りがありましたので訂正します。

jmp1001

jmp1001 score 7

2018/10/01 22:32  投稿

【Monaca】iframe内から親フレームのInAppBrowser起動に失敗する
Monacaでハイブリッドアプリを作成しています。
その際、iframeで別サイト(自分のサイト)を参照し、フレーム内でページ遷移するようにしています。
iframe(子フレーム)内で外部リンクを開くときには「InAppBrowser」プラグインを利用して親フレーム経由でアプリ内ブラウザ(または外部ブラウザ)で開きたいのですが、うまくいきません。
iFrame内のサイトに下記のようなscriptを置いて、リンクをクリックした際にはクリック親フレーム内のInAppBrowserを使うように設定しています。
<a href="#" onclick="clickURLopen('https://google.co.jp');return false;">リンク</a>
<script>
 function clickURLopen(url) {
     if(typeof inAppOpen == 'function') {
       inAppOpen(url);
     }
     else{
       window.open(url, '_system', 'location=yes');
       return false;
     }
 }
</script>
親フレーム(Monaca上にて作成)のscriptは下記の通りです。
function inAppOpen(Ext){
 window.open = cordova.InAppBrowser.open;
 window.open(Ext,'_system','location=yes');
 window.open(url,'_system','location=yes');
}
var innerWindow = document.getElementById('iframe1').contentWindow;
innerWindow.inAppOpen= inAppOpen;
iframe内の子フレームから別ページに遷移した先(これも自サイト)でリンクを開こうとすると、
1)一度目は「typeof inAppOpen」がUndefinedになっているようでブラウザを立ち上げず画面いっぱいにリンクが開いてしまう。
2)前の画面に戻りもう一度トライすると今度はInAppBrowserが起動する。
という現象が起こっています。
理由や対処法などお分かりの方がいらっしゃいましたらご教示頂ければ幸いです。
宜しくお願い致します。
  • iframe

    171 questions

    HTMLのタグ<iframe>です。<iframe>は、ドキュメント内に""inline frame""を作るHTML要素で、同じページでセパレートしているドキュメントが表示されるようにします。

  • プラグイン

    680 questions

    プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

  • Monaca

    1239 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る