W mojej aplikacji używam WebView
i używam JavaScript alert( )
metody, ale nie działa, nie pojawia się wyskakujące okienko.
w moim pliku manifestu, który dodałem
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
iw pliku aktywności, które dodałem
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/demo.html");
W pliku układu xml dodałem
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
Wszelkie pojęcia, jak włączyć pełny JavaScript
in WebView
?
Aktualizacja
Dzięki zaznacz,
że alert()
metoda w html
pliku już działa :).
Teraz są dwa problemy WebView
:
1: używam <textarea>
w pliku html, który ładuję WebView
, i próbuję pisać czcionką w języku hindi, ale kiedy próbuję napisać tekst w języku hindi, wyświetla się on jako symbole (symbole prostokątów, takie jak []).
kiedy robię to samo w przeglądarce Firefox na komputerze, działa dobrze. jakieś wskazówki, jak zapewnić obsługę wielu języków textarea
w WebView
?
2: Kiedy klikam przycisk prześlij i próbuję otworzyć wartość tekstu w alert()
metodzie w innym skrypcie java, to nie działa, czy to oznacza, że nawet po użyciu WebChromeClient
jej dotyczy tylko aktualnie załadowanej strony html i nie jest javascripts
wywoływana z tej strony?
źródło
Odpowiedzi:
Sprawdź ten link i ostatni komentarz, którego musisz użyć
WebChromeClient
do swojego celu.źródło
webview.getSettings().setJavaScriptEnabled(true);
Jak wskazali inni, do pracy potrzebne jest ustawienie WebChromeClient
alert()
. Wystarczy ustawić domyślny WebChromeClient ():mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setWebChromeClient(new WebChromeClient());
Dzięki za wszystkie poniższe komentarze. W tym John Smith, który wskazał, że musisz włączyć JavaScript.
źródło
mWebView.getSettings().setJavaScriptEnabled(true);
przed wierszemmWebView.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); } });
źródło
prompt
z javascript, zamiast wyświetlać tekst zachęty, mówi: „Strona pod adresem https: //… mówi:” całkowicie przerywa zanurzenie WebView osadzonego w aplikacjiPoniższy kod zadziała:
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"); }
źródło
Możesz spróbować z tym, to zadziałało dla mnie
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); } });
źródło
jeśli chcesz ukryć adres URL przed użytkownikiem, Pokaż okno dialogowe AlertDialog, jak poniżej.
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; } }
źródło