4

Android WebView に JavaScript を挿入できます。私はすでにそれをしました。ただし、html5/javascript Web アプリ (自分のものではないため、コードにアクセスできません) をロードし、追加の JavaScript を挿入する必要があります。しかし、この Web アプリは標準の WebView では正しく動作しません。その理由はおそらく次のとおりです。

「デフォルトでは、WebView はブラウザーのようなウィジェットを提供せず、JavaScript を有効にせず、Web ページのエラーは無視されます。」
http://developer.android.com/reference/android/webkit/WebView.html

というわけでJavascriptを有効にしましたが、Webページのエラーを無視しているせいかもしれません。ただし、通常の Chrome ブラウザでは、すべてが問題なく正常に動作します。

すでに多くのものを有効にしていますが、webview は機能しません。

webView = (WebView) findViewById( R.id.webView );
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginState(PluginState.ON);
    webView.getSettings().setDomStorageEnabled(true);
    webView.setBackgroundColor(0x00000000);
    webView.setWebChromeClient( new WebChromeClient() );
    webView.setWebViewClient( new WebViewListener() );
    CookieManager.getInstance().setAcceptCookie(true);

では、通常の WebChromeClient に JavaScript を挿入する可能性はありますか? または、他に何を有効にしたり、webview に挿入したりできると思いますか?

4

2 に答える 2

3

まず、WebViewClient から派生したクラスで WebViewClient を設定する必要があります。

WebView webview = new WebView();
webview.setWebViewClient(new WebClient());
webview.loadUrl("stackoverflow.com");

次に WebClient で、ページがロードされるのを待ちます (onPageFinished)。次に、loadUrl("javascript:[あなたの JavaScript をここに]") します。

public class WebClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) 
    {       
        // Obvious next step is: document.forms[0].submit()
        view.loadUrl("javascript:document.forms[0].q.value='[android]'");       
    }
}
于 2013-11-02T00:39:43.097 に答える