UWP получает форму в веб-браузере, возвращающую «about: blank», а не значения формы - PullRequest
0 голосов
/ 14 ноября 2018

У нас есть мобильное приложение, которое отображает HTML-страницу с небольшим количеством JavaScript в веб-браузере.

На этой странице у нас есть форма. Это выглядит примерно так:

<form method="get" action = "" id="mainform">
<input name="EXAMPLE_NAME" id"EXAMPLE_NAME" placeholder="" type="text" maxlength="35"/>    
</form>

Пока все хорошо. Пользователь может просмотреть этот ввод и заполнить его данными. Затем они нажимают кнопку на странице xaml, которая вызывает функцию, которая выполняет:

Browser.Eval("submitMainForm()")

В javascript на странице есть функция, которая выглядит следующим образом:

function submitMainForm() {    
var x = document.getElementById("mainForm").submit();
}

В коде C # у нас есть обработчики для получающейся навигации. Они выглядят так:

async void OnNavigating(object sender, WebNavigatingEventArgs e)
    {

и

void OnNavigated(object sender, WebNavigatedEventArgs e)
    {

Это хорошо работает в iOS и Android. Мы получаем WebNavigatingEventArgs в обработчике, и там хранится значение из поля, которое мы показываем в веб-обозревателе (внутри mainform).

Так, например, e.Url в обработчиках OnNavigating и OnNavigated будет выглядеть примерно так:

"Файл: ///storage/emulated/0/Android/data/com.example.exampleapp/files/Example.html EXAMPLE_NAME = Test"

Мы анализируем эту строку, чтобы получить значения, которые нас интересуют (в данном случае Test), и все в порядке.

На UWP, однако, все работает намного хуже. On Navigating никогда не вызывается вообще, а вызов OnNavigated просто хранит значение «about: blank» в своем URL-адресе WebNavigateEventArgs.

Кто-нибудь знает, что здесь может происходить, и / или есть способ, которым я могу это исправить? Мне нужен способ получить результаты моего звонка в форму get, как я это делаю на двух других платформах, а не «about: blank». В идеале я также хотел бы получить вызов OnNavigated, но важнее всего данные.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 15 ноября 2018

Для отправки html-формы вам необходимо добавить action url, который использовался для полученного параметра. Например:

<form id="Myform" action="HomePage.html">
    First name:<br>
    <input type="text" name="firstname" value="Mickey">
    <br>
    Last name:<br>
    <input type="text" name="lastname" value="Mouse">
    <br><br>
    <input type="submit" value="Submit">
</form>

Когда вы вызываете submit, поле firstname фамилия будет отправлено на страницу HomePage.html. Я создаю HomePage, который Build Action равен Content в собственном проекте uwp.

enter image description here

Обратите внимание, что вы не можете создать HTML в проекте формы. В противном случае веб-просмотр может перейти к нужному URL.

Это пример кода , пожалуйста, проверьте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...