如何 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
});
我们正在从 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
});