[英]How to POST form data to an in-app browser in Ionic?
我正在使用Ionic框架。
我有這樣一個表格:
<form action='https://secure.payu.in/_payment' method="POST" target="...">
......
</form>
提交表單后,我需要在應用內瀏覽器中打開結果。
作為一個骯臟的黑客,我將表單提交目標指向當前選項卡中的iframe,但我想避免這種情況。
理想情況下,我需要在應用內瀏覽器中打開表單操作URL(而不是替換webview中的應用程序,這將導致我失去對應用程序的控制)。
我試圖在目標中給出“_blank”,但它似乎不適用於設備。
我也知道打開應用內瀏覽器的傳統方法是做類似這樣的事情:
var ref = window.open("http://example.com", "_blank", "location=no");
但是,我需要的是表單提交,應用程序內瀏覽器應該打開,而不是通過js觸發應用內瀏覽器。
任何幫助贊賞!
我最近遇到了同樣的問題。 我通過使用executeScript
方法注入表單來解決這個問題。
首先,你必須在appbrowser窗口中打開一個轉換頁面(一個空白頁面或其他但引用了jquery ,你必須在某處托管它):
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
然后,添加一個loadstop
偵聽器並在那里調用executeScript
表單(當URL與轉換頁面的URL匹配時)。
var browserWindow = window.open('http://transitionpage.com', '_blank', 'location=yes,hidden=yes,hardwareback=no');
var transitionLoaded = false;
var finalURL = 'https://finalurl.com';
var paramName = 'SOME_PARAM';
var paramValue = 'asdf';
function injectForm() {
browserWindow.executeScript({
code: "var $form;$form = $(document.createElement('form')).css({ display: 'none'}).attr('method', 'POST').attr('action', '" + finalURL + "');$('body').append($form);var $input = $(document.createElement('input')).attr('name', '" + paramName + "').val('" + paramValue + "');$form.append($input);$form.submit();"
}, function() {
//Form injected
transitionLoaded = true;
});
}
browserWindow.addEventListener('loadstop', function(event) {
if (event.url.indexOf('http://transitionpage.com') !== -1 && !transitionLoaded) {
injectForm();
}
});
browserWindow.show();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.