Ios 如何在cordova phonegap构建中使用带有wkwebview插件的postmessage

Ios 如何在cordova phonegap构建中使用带有wkwebview插件的postmessage,ios,cordova,wkwebview,postmessage,Ios,Cordova,Wkwebview,Postmessage,我正在phonegap应用程序中使用cordova插件wkwebview引擎打开网页: ref = window.open(url, '_self', 'location=no,toolbar=no'); 到目前为止,一切正常,页面显示正常,iOS日志显示应用程序正在使用wkWebView,显示速度比使用UIWebView快得多 我想从WkWebView中的页面发送postmessage,并在设备上运行的我的index.js中处理该消息。从WkWebView问题页面,我将以下代码复制到

我正在phonegap应用程序中使用cordova插件wkwebview引擎打开网页:

    ref = window.open(url, '_self', 'location=no,toolbar=no');
到目前为止,一切正常,页面显示正常,iOS日志显示应用程序正在使用wkWebView,显示速度比使用UIWebView快得多

我想从WkWebView中的页面发送postmessage,并在设备上运行的我的index.js中处理该消息。从WkWebView问题页面,我将以下代码复制到该网页中:

    <button type="button" name="button" onclick="sayHello()">Say hello</button>
    <script type="text/javascript">
        window.addEventListener("message",function(event){
            console.log("IFRAME");
            console.log(event);
        }, false);
        function sayHello(){
            parent.postMessage("Hello!","*")
        }
    </script>
打招呼 window.addEventListener(“消息”,函数(事件){ 控制台日志(“IFRAME”); console.log(事件); },假); 函数sayHello(){ parent.postMessage(“你好!”,“*”) } 我编译/安装应用程序并运行。我点击按钮,调试器显示parent.postMessage执行。现在我准备在设备端编写消息处理程序

复制的代码显然假定它在iframe中运行,我假定它是由Phonegap启动的main index.html

在尝试iframe方法之前,我想知道:有没有人找到一种不用iframe就可以使用postmessage在index.js和WkWebView之间进行通信的方法

例如,my window.open创建对象“ref”。我可以简单地在“ref”上添加一个事件侦听器来捕获消息吗?如果是这样,那么我怀疑在调用“parent.postmessage”时需要使用“parent”以外的其他内容。那会是什么

建议很好,例子更好


请注意,此应用程序尚未要求深入研究本机代码。。。Phonegap构建在创建我的可安装程序方面做得很好。如果可能的话,我希望保持这种状态。

您是否使用浏览器核心插件中的cordova插件?嗨,Shazron,谢谢您的提问。我确实有iframe版本的消息功能,所以尽管我仍然对这个主题感兴趣,但它现在对我来说优先级较低。我确实在config.xml中列出了inappbrowser作为插件。我试着只在Android上使用它:if(device.platform==“iOS”){ref=window.open(url,'.'self','location=no,toolbar=no');}或者{ref=cordova.InAppBrowser.open(url,'.'u blank',location=no,toolbar=no');}您是否正在使用AppBrowser核心插件中的cordova插件?嗨,Shazron,谢谢您的提问。我确实有iframe版本的消息功能,所以尽管我仍然对这个主题感兴趣,但它现在对我来说优先级较低。我确实在config.xml中列出了inappbrowser作为插件。我试着只在Android上使用它:if(device.platform==“iOS”){ref=window.open(url,'.'self','location=no,toolbar=no');}或者{ref=cordova.InAppBrowser.open(url,'.'u blank',location=no,toolbar=no');}