У нас есть веб-приложение и приложение для мобильных устройств, которое генерирует динамический опросник с использованием HTML.Это позволяет нам создавать самые разные вопросы (текстовые поля, выпадающие списки, даты, переключатели).В настоящее время мы перестраиваем наше приложение, используя Xamarin Forms , и хотели бы повторно использовать существующий код, который генерирует этот вопросник.Кроме того, не все необходимые нам элементы управления реализованы в Xamarin .
. До сих пор мне удалось создать анкету в Xamarin с использованием WebView .Это работает отлично.Когда пользователь отправляет анкету, я могу получить HTML-код из WebView .Проблема в том, что HTML не показывает ни одного ответа пользователя на вопросы.Например, если пользователь ввел ответ в одно из текстовых полей, его нет нигде в HTML, возвращаемом из элемента управления WebView .
Вот как ясоздание вопросника HTML.
StringBuilder htmlString = new StringBuilder();
//build up my HTML string here
htmlString.Append("<div>.....");
var htmlWebView = new HtmlWebViewSource { Html = htmlString.ToString() };
WebView.Source = htmlWebView;
В случае нажатия кнопки отправки я получаю HTML-код из элемента управления WebView следующим образом.
var webViewSource = WebView.Source;
var htmlString = (string) WebViewSource.GetValue(HtmlWebViewSource.HtmlProperty);
Iможет загружать и извлекать HTML из WebView .Но как мне вернуть ответы пользователя?
ОБНОВЛЕНИЕ
Я могу добавить очень простые функции Javascript в мой HTML WebView следующим образом.Это просто возвращает 100.
private static string GetJavascriptFunction()
{
StringBuilder htmlString = new StringBuilder();
htmlString.Append("<html>");
htmlString.Append("<body>");
htmlString.Append("<script type=\"text/javascript\">");
htmlString.Append("function getValue() {");
htmlString.Append("return 100;");
htmlString.Append("}");
htmlString.Append("</script>");
return htmlString.ToString();
}
При правильном вызове функции возвращается 100.
string result = await WebView.EvaluateJavaScriptAsync("getValue()");
Однако, если я хочу, чтобы Javascript выполнял любые манипуляции с DOM, он всегда просто возвращаетNULL.
private static string GetJavascriptFunction()
{
StringBuilder htmlString = new StringBuilder();
htmlString.Append("<html>");
htmlString.Append("<body>");
htmlString.Append("<script type=\"text/javascript\">");
htmlString.Append("function getValue() {");
htmlString.Append("return document.body.innerHTML;");
htmlString.Append("}");
htmlString.Append("</script>");
return htmlString.ToString();
}
Теперь возвращается NULL.
Есть ли способ использовать Javascript для возврата значений из HTML в элементе управления WebView ?