当前位置: 首页 > 面试题库 >

如何在WebView Android上显示网页的一部分

陈修诚
2023-03-14
问题内容

我正在尝试从网页中提取一小部分并加载到Webview中,我尝试按照链接中给出的解决方案进行操作,但是它不起作用

使用getElementsByClass(“ darewod”)提取数据

htmlDocument = Jsoup.connect(htmlPageUrl).get();
element = htmlDocument.getElementsByClass("darewod");

String html = element.toString();
String mime = "text/html";
String encoding = "utf-8";

我已经尝试了以下两种方法来加载到webview,但似乎不起作用,它只是在UI上打印HTML

  wv1.loadDataWithBaseURL(null, html, "text/html", "utf-8", null);

  wv1.loadData(html, "text/html", null);

你能告诉我我是否在这里想念任何东西吗?


问题答案:

您正在加载没有适当结构的
html代码(因此,所有定义head都将丢失,如CSS引用),并且没有初始文档(或使用基本url加载),所有相对路径都将损坏。

<div class="darewod"> <a title="Workout of the Day" href="/workouts/lower-abs-workout.html" rel="alternate"><img src="/images/grid/wod/2016/wod_nov8.jpg" alt="Workout of the Day"></a> </div>

您可以做什么:用所选元素替换文档的主体,然后保留有关基础的结构和信息:

范例程式码

WebView wv;
Handler uiHandler = new Handler();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    wv = (WebView)findViewById(R.id.webView);
    wv.setWebViewClient(new MyWebViewClient());

    new BackgroundWorker().execute();

}

// load links in WebView instead of default browser
private class MyWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    }

    @RequiresApi(21)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        view.loadUrl(request.getUrl().toString());
        return false;
    }
}

private class BackgroundWorker extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... arg0) {
        getDarewod();
        return null;
    }

    public void getDarewod(){

        try {
            Document htmlDocument = Jsoup.connect("http://darebee.com/").get();
            Element element = htmlDocument.select("#gkHeaderMod > div.darewod").first();

            // replace body with selected element
            htmlDocument.body().empty().append(element.toString());
            final String html = htmlDocument.toString();

            uiHandler.post(new Runnable() {
                @Override
                public void run() {
                    wv.loadData(html, "text/html", "UTF-8");
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}


 类似资料:
  • 我和我的几个伙伴正在进行国际足联联赛。我有一个服务器可以上传排行榜。现在我正在使用一个电子表格和公式来计算积分和目标差。非常简单的东西,但我不必改变一切,我只需要改变赢球、平局、输球和进球、失球。问题是,很多人用手机参与我们的在线聊天,而不能在手机上查看电子表格。 所以我要找的帮助是,我知道我可以创建一个html表,但是有没有我可以在其中包含公式的东西?

  • 本文向大家介绍如何在页面上显示Emoji表情?相关面试题,主要包含被问及如何在页面上显示Emoji表情?时的应答技巧和注意事项,需要的朋友参考一下 如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码。简单的表达就是:服务端已经执行了GET,但文件未变化。 什么情况下会返回304状态码 客户端是怎么知

  • 问题内容: 我正在尝试使用php脚本运行Java程序。 首先,php显示一个表单,用户可以在其中输入两个值:价格和销售税率。接下来,它提取值并将其传递给Java程序(预编译为.class文件)。 我不确定是否在所有Java代码正常工作的情况下将输出打印在了哪里。我的最终目标是在html页面中向用户显示结果。 我将文件内容上传到Web服务器,并尝试从那里运行它。 如何使用shell_exec或exe

  • 我键入这段代码来刮一个更新的数据(数字)。我不知道如何在一个网站上的一张桌子上展示它们。我知道我应该使用(Django或flask)但我不知道如何使用它们:)。我只想在一张表上显示这些更新的数字。我在Vs代码上使用HTML和python。下面是我的刮刮代码: 以下是更新的(逐日)数据结果: 谢谢:)

  • 问题内容: 我想检查内部网页,所以我不能直接使用W3C验证服务。我设法在本地运行XHTML验证器,但是css- validator出现了一些问题。我并不是真的想要设置Tomcat或Jigsaw以便能够运行Java servlet,并且命令行选项给了我一条错误消息 如何在Linux机器上验证本地CSS? 问题答案: 您可以从命令行调用W3C验证器: 命令行使用 任何装有Java的计算机也可以从终端/

  • 本文向大家介绍ajax添加数据后如何在网页显示,包括了ajax添加数据后如何在网页显示的使用技巧和注意事项,需要的朋友参考一下  下面通过图文并茂的方式展示给大家,具体内容如下所述:    今天下午做一个项目小练习.需要把查询日志的内容显示到网页上来.一开始陷入了一个误区.   一直以来我这个小项目需要访问ashx来生成html的代码.后台用的Razor模板引擎.   刚开始显示用户列表时.因为是