web-dev-qa-db-ja.com

Android WebViewでJavaScriptアラートが機能しない

私のアプリケーションでは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を有効にする方法の手がかりはありますか?


更新

ありがとうマーク
htmlファイルのalert()メソッドは現在機能しています:)。

WebViewには2つの問題があります。
1:WebViewで読み込んでいるhtmlファイルで<textarea>を使用していますが、その中にヒンディー語のフォントで書き込もうとしていますが、ヒンディー語のテキストを書き込もうとするとシンボルとして表示されます([]のような長方形記号)。

デスクトップのFirefoxブラウザで同じことをすると、うまくいきます。 textareaWebViewで複数の言語をサポートする方法の手がかりは?

2:[送信]をクリックして、別のJavaスクリプトのalert()メソッドのテキストの値を開こうとすると、動作しません。これは、WebChromeClientを使用した後でも、そのページから呼び出されたjavascriptsではなく、読み込まれたhtmlページ?

78
user655192

this linkをチェックし、最後のコメント、目的にWebChromeClientを使用する必要があります。

84
sat

他の人が示したように、alert()を機能させるにはWebChromeClientの設定が必要です。デフォルトのWebChromeClient()を設定するだけで十分です。

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());

以下のすべてのコメントをありがとう。 JavaScriptを有効にする必要があることを示したJohn Smithを含む。

103
Stephen Quan
webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        return super.onJsAlert(view, url, message, result);
    }
});
19
Nikhil Dinesh

次のコードが機能します:

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");
}
5
user1645162

追加するだけ

mWebview.setWebChromeClient(new WebChromeClient());

それが動作します。

1
Abhilash Nair

これで試すことができます、それは私のために働いた

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);
        }

    });
0
Tarit Ray