При загрузке некоторых веб-сайтов в 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), и я хотел бы, чтобы это работало с разными сайтами. Кроме того, я не хочу, чтобы изменения на сайте нарушали мое приложение.