我们正在从ionic app的inappbrowser中加载给定的URL,它将加载HTML表单以及一个隐藏的输入字段。
我试图得到隐藏的字段值,同时使用inappbrowser的executeScript方法点击提交按钮,如下所示:
browser.executeScript({
code:
"var result; document.getElementById('BtnSubmit').addEventListener('click', function(){" +
"result = document.getElementById('myInput').value;});",
});
在result变量中,输入值被获取,但需要从executeScript返回到ionic app的上下文中。
你需要将你的响应附加到inappbrowser的消息事件,然后在应用端接收它。
下面的脚本是用来发送postmessage的。它有特定的传递格式。需要创建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
});