科尔多瓦InAppBrowser打开远程页面支持调用本机方法?

时间:2019-02-27 08:35:03

标签: cordova cordova-plugins inappbrowser

尝试在cordova中打开远程页面时遇到问题。

我尝试使用InAppBrowser插件打开远程页面无呼叫本机方法。

我检查了官方文件。 InAppBrowser不允许访问本地方法,但是我需要实现此功能。

您能帮助我了解如何执行此操作或获得解决方法吗?

1 个答案:

答案 0 :(得分:1)

postMessage API已将cordova-plugin-inappbrowser的仿真添加到Android和iOS的this PR中,使您能够将加载到InappBrowser Webview中的页面中的消息发布回主Cordova。应用运行所在的Webview。使用此功能,您可以从加载到InappBrowser中的页面调用应用程序中的“本机方法”。

latest release version on npmv3.0.0)中尚未提供此功能,因此您需要直接从Github master分支(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中时,您将发送消息:

<script type="text/javascript">
    document.addEventListener('DOMContentLoaded', function(){
        var message = {action: "myNativeMethod"};
        webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(message));
    }, false);
</script>

如果您无法直接控制要加载到InappBrowser中的页面,则可以注入代码以发送消息:

inAppBrowserRef.executeScript({ code: '\
    var message = {action: "myNativeMethod"};\
    webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(message));'
});