いつもお世話になっております。
前提・実現したいこと
monacaでInAppBrowserを使用しWebサイトを表示するアプリを制作しています。
InAppBrowserで表示したwebサイトからmessageイベントで値を受け取りmonaca側で処理したあとweb側に値を返す処理を作りたいと考えています。
わざわざアプリ側で処理するのはmonacaの別のプラグインを使用するためなので、Web側で完結させることはできません。
発生している問題
下記を参考にmessageイベントでweb側からアプリ側へ値を渡し受けとる処理を作ることができました。
https://ja.docs.monaca.io/reference/core-cordova-plugins/cordova_10.0/inappbrowser
https://qiita.com/keeey/items/4076addc9f32058a47d8
しかしWeb側から受け取った後、アプリ側からWeb側に値を返す方法がドキュメントにも記載がなくわかりません。
試したこと
iframeなどですとevent.source.postMessage()
のようにsourceプロパティを使用することで、呼び出し元と再度通信することができると思います。
しかしInAppBrowserで試したところCannot read properties of undefined (reading 'postMessage')
になりました。
Webからアプリを呼び出す時に使うwebkit.messageHandlers.cordova_iab.postMessage()
も試しましたが同様のエラーになりました。
javascript
1inAppBrowserRef = cordova.InAppBrowser.open(url, '_blank', plugin_option); 2inAppBrowserRef.addEventListener('message', function(e){ 3 ~~受け取った値を処理~~ 4 e.source.postMessage("ok","*"); //→Cannot read properties of undefined (reading 'postMessage'); 5 webkit.messageHandlers.cordova_iab.postMessage("ok") //→Cannot read properties of undefined (reading 'messageHandlers') 6)};
アプリ側からWeb側に送る処理、アプリ側からWeb側で受け取るための処理をどのように記述するかご教示いただけないでしょうか。
方法を調べる中でInAppBrowserのmessageイベントは双方向性がないというような記述を見かけた気がするので、そもそも方法がないのかもしれませんが…。
補足情報(FW/ツールのバージョンなど)
Cordova 10.0
InAppBrowser 5.0.0
あなたの回答
tips
プレビュー