2

JavaScriptの処理を停止するWebViewカスタムを追加しようとするまで機能する、非常に基本的なものがあります。webViewClient私は何か間違ったことをしていますか?WebViewのアドレスバーとメニューオプションを取り除く別の方法はありますか?

    browser = (WebView) findViewById(R.id.webkit);

    WebSettings webSettings = browser.getSettings();
    webSettings.setJavaScriptEnabled(true);

    // uncommenting this line will remove address bar, but also stop JavaScript from loading
    //browser.setWebViewClient(new InternalWebViewClient());

    // even uncommenting this line will stop JavaScript from loading
    //browser.setWebViewClient(new WebViewClient());

    browser.setWebChromeClient(new InternalWebChromeClient());
    if (savedInstanceState != null) {
        browser.restoreState(savedInstanceState);
    } else {
        browser.loadUrl("http://site.with.javascript");
    }
4

3 に答える 3

4

私のアプリでは、次のものを使用していますが、アドレスバーはなく、JavaScriptは機能します(名前に合わせて変更されます)。

browser = (WebView) findViewById(R.id.webkit);
browser.getSettings().setJavaScriptEnabled(true);

browser.loadUrl("http://site.with.javascript");

setWebViewClient私はまたはで何もしません、setWebChromeClientそしてそれは説明されたように働きます。

コードの問題は、デフォルトの(内部)WebViewClientやWebChromeClientでJavaScriptを有効にしてから、それらを新しいプロパティを持つ新しいものに置き換えることだと思います。

あなたがsetJavaScriptEnabled(true)それらの新しい割り当ての後で(そしてloadUrl私があなたのコードがうまくいくと思う前に)来るように呼び出しを動かすならば。

于 2010-08-06T13:27:51.280 に答える
3

何らかの理由で、Webkitはブラウザとは異なる方法でJSを実行します-ページがロードされた後、いくつかのJSを次の行で実行するように強制することで、問題を回避することになりました。

browser.loadUrl("javascript:document.getElementById('something').do.something()");
于 2010-08-09T13:01:50.110 に答える
0

私はそのような決定に助けられました。コンピューティングを無名関数でラップします。

"javascript:" + "(function(){ <YOUR CODE> })();"
于 2017-04-26T21:55:21.850 に答える