Кнопка отправки формы не работает в WebView

При загрузке некоторых веб-сайтов в WebView я не могу отправлять свои формы. При нажатии кнопки ввода (кнопка) она фокусируется, но ничего больше не происходит.

Те же самые сайты работают в Chrome (на одном устройстве).

Как я могу это исправить? Есть ли параметр, который мне не хватает?

Будет также оценена обратная связь о том, почему эта проблема происходит.


Пример

Шаги по воспроизведению

  • Загрузите BrowseActivity, который загрузит https://m.ebay.com/
  • После загрузки страницы введите поисковый запрос (например, "Ноутбук" )
  • Нажмите кнопку синего поиска формы или кнопку действия на клавиатуре программного обеспечения (значок стекла лупы)

Ожидаемое поведение. Форма поиска должна быть отправлена ​​и результаты поиска показаны

Фактическое поведение. Синяя кнопка поиска получает фокус (представлен яркой рамкой), но ничего больше не происходит.


BrowseActivity.java

public class BrowseActivity extends AppCompatActivity {

    WebView mWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_browse);

        mWebView = (WebView) findViewById(R.id.home_wv_content);
        mWebView.setWebViewClient(new WebViewClient());
        mWebView.setWebChromeClient(new WebChromeClient());
        mWebView.getSettings().setJavaScriptEnabled(true);

        // Ebay has a blue search button where this issue can be replicated
        mWebView.loadUrl("https://m.ebay.com");
    }
}

activity_browse.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="my.example.BrowseActivity">

    <WebView
        android:id="@+id/home_wv_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</android.support.constraint.ConstraintLayout>

Edit:

Я рассмотрел использование пользовательского интерфейса JavaScript, чтобы поймать щелчок на кнопке, прочитать входной запрос и затем перенаправить на поиск стр.

В любом случае, этот подход тесно связан с самим сайтом (например, ebay), и я хотел бы, чтобы это работало с разными сайтами. Кроме того, я не хочу, чтобы изменения на сайте нарушали мое приложение.

Ответы

Ответ 1

Возможно, вам нужно включить другие вещи в веб-браузере, чтобы иметь полный эквивалент браузера. Есть другие вещи, которые по умолчанию отключены в webview в дополнение к javascript).

Попробуйте этот параметр (на основе моего проекта, где у нас были проблемы с webview):

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setDatabaseEnabled(true);
mWebView.getSettings().setDatabasePath(dbpath); //check the documentation for info about dbpath
mWebView.getSettings().setMinimumFontSize(1);
mWebView.getSettings().setMinimumLogicalFontSize(1);

Ответ 2

У меня были аналогичные проблемы, в частности, для загрузки файла.

Отзывы о том, почему эта проблема возникает: -

Проблема заключается в том, что существуют разные версии ОС и разные версии Web Engine. Поскольку я предполагаю, что веб-представление представляет страницу HTML5, и это плохо работает на этом устройстве, вам, вероятно, потребуется больше, чем JS.

Некоторые веб-страницы отслеживают количество отправлений и им нужен доступ к клиентскому/веб-хранилищу.

WebSettings mWebSettings = mWebView.getSettings();
mWebSettings.setJavaScriptEnabled(true); // Done above
mWebSettings.setDomStorageEnabled(true); // Try
mWebSettings.setSupportZoom(false);
mWebSettings.setAllowFileAccess(true);
mWebSettings.setAllowContentAccess(true);

Я не могу много помочь, не зная, по крайней мере, версию ОС Android, которая будет указывать на используемую версию веб-движка.

Приветствия.

Ответ 3

Я думаю, что это ошибка m.ebay.com, потому что я пробовал использовать хранилище примеров, например: http://pksgirl.com.br/lojavirtual/, и это работы.

Если вы откроете m.ebay.com, используя инструменты chrome dev, вы увидите форму поиска, когда будете сфокусированы, откройте "modal", я думаю, что версия m.ebay не работает в веб-обзоре