Ответ 1
Проверьте эту ссылку и последний комментарий. Вы должны использовать WebChromeClient
для своей цели.
В моем приложении я использую WebView
и в том, что я использую метод JavaScript alert( )
, но его не работает, всплывающее окно не появляется.
в моем файле манифеста я добавил
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
и в файле активности я добавил
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/demo.html");
В макете xml файла я добавил
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
Любой ключ, как включить полный JavaScript
в WebView
?
Обновление
Спасибо, знак
метод alert()
в файле html
теперь работает:).
Теперь в WebView
есть две проблемы:
1: Я использую <textarea>
в html файле, который я загружаю в WebView
, и пытаюсь записать в нем шрифт языка хинди, но когда я пытаюсь написать текст хинди, он отображается как символы (символы прямоугольника, такие как [ ]).
когда я делаю то же самое в браузере Firefox на рабочем столе, он отлично работает.
любой ключ, как дать поддержку для нескольких языков в textarea
в WebView
?
2: Когда я нажимаю кнопку "Отправить" и пытаюсь открыть значение текста в методе alert()
в другой java script, это не работает, значит ли это даже после использования WebChromeClient
его применимо только для текущей загруженной страницы html, а не javascripts
, вызванной с этой страницы?
Проверьте эту ссылку и последний комментарий. Вы должны использовать WebChromeClient
для своей цели.
Как указывали другие, настройка WebChromeClient необходима для того, чтобы alert()
работал. Достаточно просто установить WebChromeClient() по умолчанию:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
Спасибо за все комментарии ниже. Включая Джона Смита, который указал, что вам нужно включить JavaScript.
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});
Следующий код будет работать:
private WebView mWebView;
final Activity activity = this;
// private Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
activity.setProgress(progress * 1000);
}
});
mWebView.loadUrl("file:///android_asset/raw/NewFile1.html");
}
Вы можете попробовать с этим, это сработало для меня
WebView wb_previewSurvey=new WebView(this);
wb_previewSurvey.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
//Required functionality here
return super.onJsAlert(view, url, message, result);
}
});
Просто добавь
mWebview.setWebChromeClient(new WebChromeClient());
Это будет работать.