gpt4 book ai didi

android - webkit 未定义 : InAppBrowser Cordova

转载 作者:行者123 更新时间:2023-12-03 21:03:30 31 4
gpt4 key购买 nike

我在 Cordova 应用程序中从 typescript 文件运行一个 InAppBrowser 实例。我的 package.json 中连接了最新的 InAppBrowser 插件。当我在此 InAppBrowser 的 loadStop 事件上添加监听器时。它不执行脚本说'webkit 未定义'。我找不到与之相关的答案。有没有人知道如何解决这个问题?

代码 fragment

      switchHybridApp.on("loadstop").subscribe((event: InAppBrowserEvent) => {
console.log("Here I am 3");
console.log('loadstop has been fired'); // this fires
debugger;
// when this has been executed, `webkit` variable doesn't exist inside of the `inappbrowser`
// instance
switchHybridApp.executeScript({ code: "\
var message = 'this is the message';\
var messageObj = {my_message: message};\
var stringifiedMessageObj = JSON.stringify(messageObj);\
webkit.messageHandlers.cordova_iab.postMessage(stringifiedMessageObj);"
});
}
);

错误 Error

我尝试过但没有成功的解决方案

(任何窗口).webkit....

(窗口).webkit....

最佳答案

好的,我在一年后来到这里来回答这个问题以及我是如何解决它的。所以我有无限的运行间隔来使用 executeScript 检查 native 和 inappbrowser 的 localStorage,但这是一个非常糟糕的选择。现在 InAppBrowser 已经实现了“postMessage”。现在的通信非常简单。

我所做的是,我在 AppBrowser 中打开了网络应用程序,我在我的 ts 文件中运行了它。

(window as any).webkit.messageHandlers.cordova_iab.postMessage(sendToNative);

请注意,objToSend 必须是一个 JSON 对象。传递一个简单的字符串是行不通的。

你可以像这样创建对象 -

const sendToNative= 'frontCameraOpen';
const sendToNative= {message: sendToNative};
const stringifiedMessageObj = JSON.stringify(sendToNative);

现在从原生端,像这样使用这个事件监听器

inAppBrowser.on('message').subscribe((dataFromIAB) => {
alert(dataFromIAB.data.sendToNative);
});

感谢@DaveAlden 提供此功能,一年前我做错了,哈哈。

关于android - webkit 未定义 : InAppBrowser Cordova,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56124899/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com