質問: document.getElementById('iframe1').contentWindow; innerWindow.inAppOpen= inAppOpen; iframe内の子フレームから別ページに遷移した先(これも自サイト)でリンクを開こうとすると、 1)一度目は「typeof inAppOpen」がUndefinedになっているようでブラウザを立ち上げず画面いっぱいにリンクが開いてしまう。 2)前の画面に戻りもう一度トライすると今度はInAppBrowserが起動する。 という現象が起こっています。 理由や対処法などお分かりの方がいらっしゃいましたらご教示頂ければ幸いです。 宜しくお願い致します。
回答: 基本的に、Monaca/Cordovaではiframeを使ったアプリケーションはあまりおすすめ出来ないと思います。(特に、ブラウザの進む・戻るの処理に問題があると思います) ですが、この質問については、自分の環境で次のコードで試したところ、特に問題なく動作しているようでした。 ``` ``` iOSとAndroidのMonacaデバッガーでそれぞれ動作確認しました。 注意点としては 1. iframeタグをbodyタグの中に記述してしまうと、iosで問題が発生するため、devicereadyイベント後にjavascriptでiframeタグを動的に挿入している 2. iframeのcontentWindowにinAppOpenオブジェクトを組み込むのは、iframeを読み終わってから行う。 です。2.が本当に必要かどうかはちょっとよく分からないのですが、Webページの読み込みに時間がかかるとinAppOpenオブジェクトの組み込みが早すぎてしまうのではないかと思い、このようにしてみました。