Эмуляция postMessage API была добавлена в cordova-plugin-inappbrowser для Android и iOS с помощью этого PR , который позволяет вам публиковать сообщения отстраница, загруженная в веб-представление InappBrowser, обратно в основное веб-представление Cordova, где выполняется ваше приложение.Использование этого позволит вам вызывать «собственные методы» в вашем приложении со страницы, загруженной в InappBrowser.
Эта функция еще не в последней версии выпуска на npm (v3.0.0
) поэтому вам нужно установить плагин непосредственно из главной ветви Github (v3.1.0-dev
):
cordova plugin add https://github.com/apache/cordova-plugin-inappbrowser
В коде приложения Cordova вы добавили бы код для прослушивания сообщений из InappBrowser, дляпример:
var inAppBrowserRef = cordova.InAppBrowser.open("http://www.mypage.com", "_blank");
inAppBrowserRef.addEventListener("message", function (params){
if(params.data.action === "myNativeMethod"){
// Call your native method
myApp.myNativeMethod();
}
});
Затем на веб-странице, загружаемой в InappBrowser, вы отправите сообщение:
<button id="myButton">Press me</button>
<script type="text/javascript">
document.getElementById("myButton").addEventListener("click", function(){
var message = {action: "myNativeMethod"};
webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(message));
}, false);
</script>
Если у вас нет прямого контроля над страницей, загружаемой вInappBrowser, вы можете ввести код для отправки сообщения:
inAppBrowserRef.executeScript({
code: '\
document.getElementById("myButton").addEventListener("click", function(){\
var message = {action: "myNativeMethod"};\
webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(message));\
}, false);\
'
});