11

ウェブページのコンテンツをウェブビューにロードするアプリを作りたいです。Web ページのコンテンツ全体ではなく、Web ビュー全体で特定のものだけを表示したい。

ここに例があります。使用する場合: http://us.m.yahoo.com/w/sea​​rch%3B_ylt=A2KL8xs0vUBQMg0AwAkp89w4 ?submit=oneSearch&.intl=us&.lang=en&.tsrc=yahoo&.sep=fp&p=digital+cameras&x=0&y= 0を webview の URL として指定すると、ページのすべてのコンテンツが webview に読み込まれます。しかし、ページのバナーを削除して、アプリケーションの webview に表示したいと考えています。

CSS タグを使用してアドブロッカーを使用してみましたが、うまくいきません。この問題を克服するためのアイデアを教えてください。

ありがとう。

4

3 に答える 3

19

Zyberさん、ご回答ありがとうございます。AndroidのWebViewのコードにJavaScriptを挿入して解決しました。

final WebView webview = (WebView)findViewById(R.id.browser);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new WebViewClient() {
 @Override
public void onPageFinished(WebView view, String url)
{
    webview.loadUrl("javascript:(function() { " +
            "document.getElementsByTagName('header')[0].style.display="none"; " +
            "})()");
}
});
webview.loadUrl("http://code.google.com/android");

これは私の目的を解決し、使いやすいです。

于 2012-09-04T15:24:24.047 に答える
4

これを追加する解決策を得ました:

view.getSettings().setJavaScriptEnabled(true);
        view.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageFinished(WebView view, String url)
            {
                view.loadUrl("javascript:(function() { " +
                        "var head = document.getElementsByClassName('header')[0].style.display='none'; " +
                        "var head = document.getElementsByClassName('blog-sidebar')[0].style.display='none'; " +
                        "var head = document.getElementsByClassName('footer-container')[0].style.display='none'; " +
                        "})()");

            }
        });
        view.loadUrl("your url");

(var head =) を追加すると、webview でクラスが非表示になるように見えます。

これが誰かの役に立てば幸いです。

于 2018-04-12T11:23:47.173 に答える
3

WebページからHtml要素を簡単に抽出する方法を提供するライブラリを提供するJsoupを確認してください

DefaultHttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(url.toURI());
HttpResponse resp = client.execute(get);

String content = EntityUtils.toString(resp.getEntity());
Document doc = Jsoup.parse(content);
Elements ele = doc.select("div.classname");

この例では、Http GET を実行し、クラス「classname」で Div 要素を抽出します。これを Web ビューにロードできます。

于 2012-09-04T13:27:19.517 に答える