В моем приложении я использую, 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, оно не работает, означает ли это, что даже после использования WebChromeClient
его применимо только для текущей загруженной страницы html и не вызывается javascripts
с этой страницы?
источник
Ответы:
Отметьте эту ссылку и последний комментарий, который вы должны использовать
WebChromeClient
для своих целей.источник
webview.getSettings().setJavaScriptEnabled(true);
Как указывали другие, настройка WebChromeClient необходима
alert()
для работы. Достаточно просто установить WebChromeClient () по умолчанию:mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebChromeClient(new WebChromeClient());
Спасибо за все комментарии ниже. Включая Джона Смита, который указал, что вам нужно включить JavaScript.
источник
mWebView.getSettings().setJavaScriptEnabled(true);
перед строкойmWebView.setWebChromeClient(new WebChromeClient());
webview.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } });
источник
prompt
из javascript, вместо отображения текста подсказки он говорит: «Страница https: // ... говорит:», полностью нарушая погружение WebView, встроенного в приложение,Следующий код будет работать:
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); } });
источник
если вы хотите скрыть URL-адрес от пользователя, покажите AlertDialog, как показано ниже.
myWebView.setWebChromeClient(new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { Log.d(TAG, "onJsAlert url: " + url + "; message: " + message); AlertDialog.Builder builder = new AlertDialog.Builder( mContext); builder.setMessage(message) .setNeutralButton("OK", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int arg1) { dialog.dismiss(); } }).show(); result.cancel(); return true; } }
источник