如何 return 从 InAppBrowser 到 Ionic 应用程序的值

How to return value from InAppBrowser to Ionic app

我们正在从 ionic 应用程序的 inappbrowser 中加载给定 URL,它将加载 HTML 表单以及一个隐藏的输入字段。

我正在尝试使用 inappbrowser 的 executeScript 方法点击提交按钮时获取该隐藏字段值,如下所示:

  browser.executeScript({
      code:
        "var result; document.getElementById('BtnSubmit').addEventListener('click', function(){" +
        "result = document.getElementById('myInput').value;});",
    });

在结果变量中,获取输入值但需要 return 从 executeScript 到离子应用上下文。

您需要将您的回复附加到inappbrowser的消息事件,然后在应用端接收。

下面的脚本是发送post消息。它具有特定的传递格式。需要创建 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 的 post 消息:

browser.on('message').subscribe((val)=>{
const postObject:any = val;

//Do whatever you want to with postObject response from inappbrowser

});