首页 > 解决方案 > 如何将值从 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 应用程序上下文。

标签: javascriptionic-frameworkionic4inappbrowserionic5

解决方案


您需要将您的响应附加到 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

});

推荐阅读