【问题标题】:How to POST form data to an in-app browser in Ionic?如何在 Ionic 中将表单数据发布到应用内浏览器?
【发布时间】:2015-11-28 11:04:09
【问题描述】:

我正在使用 Ionic 框架。

我有一个这样的表格:

<form action='https://secure.payu.in/_payment' method="POST" target="...">
  ......
</form>

提交表单后,我需要在应用内浏览器中打开结果。

作为一个肮脏的黑客,我将表单提交目标指向当前选项卡中的 iframe,但我想避免这种情况。

理想情况下,我需要在应用内浏览器中打开表单操作 url(而不是替换 web 视图中的应用,这会导致我失去对应用的控制)。

我尝试在目标中提供“_blank”,但它似乎在设备上不起作用。

我也知道打开应用内浏览器的常规方法是执行以下操作:

var ref = window.open("http://example.com", "_blank", "location=no");

但是,我需要的是在提交表单时,应该打开应用内浏览器,而不是通过 js 触发应用内浏览器。

任何帮助表示赞赏!

【问题讨论】:

  • 我现在也有同样的问题。如果你已经完成了,你能不能把那个代码分享给我,这将是很大的帮助。
  • 嗨@NitinAgarwal,所以我所做的是一个肮脏的黑客,在离子应用程序中使用iFrame。然而,这并不安全,尽管我已经看到很多大型机应用程序都在使用这种做法。

标签: javascript android html forms ionic-framework


【解决方案1】:

我最近遇到了同样的问题。我通过使用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();

【讨论】:

  • 嗨@Gustavo Rivas,我完成了你的回答,但我有一些参数,所以如果你已经完成了集成,你能分享你的代码吗,这对我很有帮助跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多