无法将消息从 inappbrowser 发布到 Cordova 应用程序
Cannot postMessage from inappbrowser to Cordova application
我正在使用此模块 (https://github.com/apache/cordova-plugin-inappbrowser) 来打开我的 Cordova 应用程序中的外部链接。但是,postMessage
文档中的示例不起作用。
我需要能够让 inappbrowser
实例与父实例(opener
)通信的能力。鉴于 inappbrowser
没有 opener
对象,我查看了 repo 的文档和测试,但我无法重现 postMessage
API 以在 inappbrowser
实例和主 Cordova 应用程序(父)。
这是一个简单的例子,取自这个 repo 中的 documentation/test:
const ref = cordova.InAppBrowser.open('http://www.google.com', '_blank');
ref.addEventListener('loadstop', () => {
console.log('loadstop has been fired'); // this fires
// when this has been executed, `webkit` variable doesn't exist inside of the `inappbrowser`
// instance
ref.executeScript({
code: `(() => {
var message = "TESTING!!!";
webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(message));
})()`
});
});
// this is never fired
ref.addEventListener('message', (...args) => {
console.log('MESSAGE RECEIVED FROM IN_APP_BROWSER', ...args);
});
文档指向一个尚未发布的版本。我指出了这个包的 3.1.0-dev
版本,它的实现就像一个魅力。
是的,InAppBrowser 尚未实现 postMessage。在这种情况下,唯一的解决方案是使用 iframe 从您的外部网页接收 postMessage。 This has been discussed earlier 也在这个网站上。
我正在使用此模块 (https://github.com/apache/cordova-plugin-inappbrowser) 来打开我的 Cordova 应用程序中的外部链接。但是,postMessage
文档中的示例不起作用。
我需要能够让 inappbrowser
实例与父实例(opener
)通信的能力。鉴于 inappbrowser
没有 opener
对象,我查看了 repo 的文档和测试,但我无法重现 postMessage
API 以在 inappbrowser
实例和主 Cordova 应用程序(父)。
这是一个简单的例子,取自这个 repo 中的 documentation/test:
const ref = cordova.InAppBrowser.open('http://www.google.com', '_blank');
ref.addEventListener('loadstop', () => {
console.log('loadstop has been fired'); // this fires
// when this has been executed, `webkit` variable doesn't exist inside of the `inappbrowser`
// instance
ref.executeScript({
code: `(() => {
var message = "TESTING!!!";
webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(message));
})()`
});
});
// this is never fired
ref.addEventListener('message', (...args) => {
console.log('MESSAGE RECEIVED FROM IN_APP_BROWSER', ...args);
});
文档指向一个尚未发布的版本。我指出了这个包的 3.1.0-dev
版本,它的实现就像一个魅力。
是的,InAppBrowser 尚未实现 postMessage。在这种情况下,唯一的解决方案是使用 iframe 从您的外部网页接收 postMessage。 This has been discussed earlier 也在这个网站上。