簡體   English   中英

如何在Ionic中將表單數據發布到應用程序內瀏覽器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM