【发布时间】:2016-09-20 18:21:21
【问题描述】:
WKWebview 和 Phonegap 构建:index.js 和 WKWebView 之间的通信甚至可能吗?
我正在使用 Phonegap Build 来生成我的移动设备可执行文件。我正在打开一个 webview 并从我们的网站加载一个页面。在使用 UIWebView 时,我在移动设备上对 index.js 进行编码以侦听 loadstop 事件并调用 executescript 以在 webview 中的网页上执行 javascript 并将结果返回给 index.js,我可以在其中做任何我需要的事情。
但是 UIWebView 很慢,所以对于 iOS,我一直在尝试让 WKWebView 通过 cordova-plugin-wkwebview-engine 插件工作。
我可以让 WKWebview 打开我的 URL,与 UIWebView 相比,它的速度非常快,但是经过几天的搜索(每个页面都包含 Google 知道的“WKWebView”和“Phonegap”)和实验,我一直无法找到任何方法来检测 loadstop(或等效),我也没有找到任何方法来从 index.js 中执行 WKWebView 中的脚本。
我可能会对 index.js 和 WKWebView 之间的任何通信方法感到满意。 loadstop事件后是否有类似executescript的过程,即使是异步的?是否有某种类型的消息传递功能?
我很想看看 index.js 的一些代码示例。
我开始认为我将不得不崩溃并求助于在 xcode 中学习本机代码来实现这一点。我当然希望不是因为到目前为止,Phonegap Build 对我来说效果很好。
有人遇到过这种情况吗?
这是在 UIWebView 下工作的代码。在 WKWebView 下可以很好的打开 URL,但是 loadstop 没有触发,也没有执行脚本。
launchBrowserWindow: function (url) {
var ref;
try {
ref = window.open(url, '_self', 'location=no,toolbar=no');
} catch (e) {
console.log("McMApp catch window.open fail: " + url + " err: " + e.message);
}
try {
ref.addEventListener("loadstop", function () {
ref.executeScript(
{ code: 'window.location.search' },
function (value) {
var requestString = value[0];
console.log("McMApp loadstop request string: " + requestString);
});
});
} catch (e) {
console.log("McMApp FAIL ref.addeventlistener loadstop");
}
},
50 个煮熟的鸡蛋送给任何可以帮助我完成这项工作的人。
【问题讨论】:
标签: ios cordova phonegap-build wkwebview