javascript - 如何将值从 InAppBrowser 返回到 Ionic 应用程序
问题描述
我们正在从 ionic 应用程序的 inappbrowser 中加载给定的 URL,它将加载 HTML 表单以及一个隐藏的输入字段。
我正在尝试使用 inappbrowser 的 executeScript 方法点击提交按钮时获取该隐藏字段值,如下所示:
browser.executeScript({
code:
"var result; document.getElementById('BtnSubmit').addEventListener('click', function(){" +
"result = document.getElementById('myInput').value;});",
});
在结果变量中,获取输入值,但需要将其从 executeScript 返回到 ionic 应用程序上下文。
解决方案
您需要将您的响应附加到 inappbrowser 的消息事件,然后在应用程序端接收它。
下面的脚本是发送邮件。它具有传递的特定格式。需要创建 JSON 对象。
browser.executeScript({
code: "document.getElementById('customBackbtn').onclick = function() {\
var message = 'close';\
var messageObj = {message: message};\
var stringifiedMessageObj = JSON.stringify(messageObj);\
webkit.messageHandlers.cordova_iab.postMessage('stringifiedMessageObj');\
}"});
然后在您的应用程序中捕获来自 iab 的发布消息:
browser.on('message').subscribe((val)=>{
const postObject:any = val;
//Do whatever you want to with postObject response from inappbrowser
});
推荐阅读
- vue.js - 如何获取调用函数的组件?
- mysql - 如何让日志表在mysql中每次更新时都累积数据?
- javascript - 如果我设置 maxDate 和 minDate,则引导 datetimepicker 不会将值设置为输入
- kubernetes - metadata.name = POD=name - statefulset 的环境变量 - app-0 app-1
- docker - docker build 未使用 ENV 设置环境变量
- javascript - 如何在 tsc 中引用 html 表单元素值?
- c# - ResetPassword 功能不使用链接中的代码
- sql-server - SQL Server:根据另一个表的更改自动将更新流式传输到汇总表的最佳方式
- python - Python lambda & 列表
- flutter - Android Studio 4.2.1 设备资源管理器再次丢失