javascript - 从 Angular Web 应用程序广播事件并在 IONIC 应用程序中接收
问题描述
我有一个 IONIC 应用程序,它使用 InAppBrowser 使用我的 Angular Web 应用程序。我想从 Angular Web 应用程序触发一个事件并从 IONIC 应用程序打开相机。目前,我正在使用 InAppBrowser 打开我的 Angular Web 应用程序。谁能向我建议实现这一目标的最佳方法是什么?
我试过 postMessage, Event, window.addEventListener 但没有成功
我需要将我当前的 Angular Web 应用程序集成到 IONIC 移动应用程序中,并将 Cordova 插件与 Angular Web 应用程序一起使用。
解决方案
您可以尝试实现对使用 Cordova 创建的 InAppBrowser 窗口必须可用的 postCordovaMessage。
在您的 APP 中添加消息监听器:
const browser = this.inAppBrowser.create('https://.....');
browser.on('message').subscribe(event => {
if (message.data.action === 'openCamera') {
// open camera
}
});
在您的 WEB 中发送消息:
var message = {action: 'openCamera'};
if (webkit.messageHandlers.cordova_iab) {
webkit.messageHandlers.cordova_iab.postMessage(JSON.stringify(message));
}
如果您的 WEB 页面只需要为 WEB 页面功能捕获图像,那么您可以尝试对输入元素使用 HTML5 捕获属性:
<input type="file" accept="image/*" capture >
推荐阅读
- c# - 从 WPF 中的材质 DataPicker 更改日期颜色
- php - 尝试使用 Noto Emoji 时出现 mPDF 错误
- python - keyboard.is_pressed() 无法正常工作
- git - 为一个 git merge 会话解决 git merge 有利于我的问题
- c# - 为什么我不能使用 xamarin 在 c# 代码中覆盖来自列表视图
- python - 使用tensorflow时如何处理OOM(内存不足)问题?
- python - python中不区分大小写的选择单击
- laravel - 无法选择 laravel 关系上的特定列
- r - Dplyr 过滤器使用时返回意外结果
- go - strconv.ParseInt:解析“18446744073709551615”:值超出范围