当前位置: 首页 > 知识库问答 >
问题:

webview加载网页,但加载后部分内容消失(Android Studio)

狄冥夜
2023-03-14

我试着在网络视图中查看http://artikelweb.com。网页显示得很好。但是,每当我从“热门作者”部分转到任何作者链接时,网页都会出现,但是加载后,报价没有显示。

在Google Chrome浏览器(移动)中,加载后会出现引号,

但是,在我的应用程序中,引用不会显示在网络视图中。

代码片段:

@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web);

    myWebView = (WebView)findViewById(R.id.webView);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    myWebView.loadUrl("http://www.artikelweb.com");
    myWebView.setWebViewClient(new WebViewClient());


}


@Override
public void onBackPressed() {
    if(myWebView.canGoBack()) {
        myWebView.goBack();
    } else {
        super.onBackPressed();
    }
}

共有2个答案

萧伟兆
2023-03-14

将UserAgent设置为Webview设置,然后重试

webSettings.setUserAgentString("Mozilla/5.0 (Linux; <Android Version>; <Build Tag etc.>) AppleWebKit/<WebKit Rev> (KHTML, like Gecko) Chrome/<Chrome Rev> Mobile Safari/<WebKit Rev>");
仲孙凡
2023-03-14

在特定情况下,必须启用DOM存储API

webSettings.setDomStorageEnabled(true);

所以你的代码必须是:

@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_web);

    myWebView = (WebView)findViewById(R.id.webView);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    myWebView.loadUrl("http://www.artikelweb.com");
    myWebView.setWebViewClient(new WebViewClient());
}

这是因为使用您正在访问的网站的javascript需要它在其javascript中。

当然,您可以利用第三方库,但同样,您不知道为什么这个确切的案例在第三方库中有效,而不是在默认的webview中有效。

您正在使用的库具有以下初始设置:

https://raw.githubusercontent.com/delight-im/Android-AdvancedWebView/master/Source/library/src/main/java/im/delight/android/webview/AdvancedWebView.java

final WebSettings webSettings = getSettings();
        webSettings.setAllowFileAccess(false);
        setAllowAccessFromFileUrls(webSettings, false);
        webSettings.setBuiltInZoomControls(false);
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);
        if (Build.VERSION.SDK_INT < 18) {
            webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
        }
        webSettings.setDatabaseEnabled(true);
        if (Build.VERSION.SDK_INT < 19) {
            webSettings.setDatabasePath(databaseDir);
        }
        setMixedContentAllowed(webSettings, true);

        setThirdPartyCookiesEnabled(true);

默认情况下启用默认webview出于安全原因禁用的许多选项。

 类似资料:
  • 问题内容: 我的问题是该网页未加载到webview中。 启动网络浏览器… 这是我的活动代码: 我在清单中添加了所需的权限: 问题答案: 由于这篇文章,我终于找到了解决方案。这是代码:

  • 问题内容: 我需要在我的站点中显示另一个外部站点的内容。通常标签可以做到这一点。但我的要求不是全部内容,而只是该网站的一部分。例如该网站的布局有3个部分,,,。我的意思是我只想显示一部分。我该怎么做? 我试过了,但是没有用。 问题答案: 这是由于ajax跨域安全性限制,一种技巧是从服务器设置代理脚本,该脚本从不同的站点(域)下载内容,并将该代理用作javascript中的参考。 示例:(proxy

  • 我想在中显示pdf文件的内容。 问题:当我启动时,一个新的对话框正在打开,不管我是想在浏览器中还是在pdf查看器中加载pdf。但我想直接在中加载内容。我还尝试了一个前缀url来嵌入内容,但结果显示:没有预览可用。 我的代码: 我现在用android-pdfView库用下面的代码尝试了一下: 但随后会在以下地址出现一个:。adress直接引用了我onedrive帐户中的pdf文件。所以当我在浏览器中

  • 我已经在Eclipse SWT应用程序中嵌入了JavaFX的WebView,需要加载html内容。我需要阻止当前线程的执行,直到webengine加载完内容。任何熟悉这种情况并能给出一些提示和/或最佳实践来实现这一点的人?SWT和JavaFX似乎都在同一个UI线程中运行。 谢谢

  • 我试图用WebView制作一个应用程序,但是网站使用的是,但是内容(例如mp3文件)使用的是,所以Android Lollipop不会加载它,因为它是“混合内容”。我尝试使用,但它没有加载任何内容。有办法修好吗?或者我可以让所有加载的网站都使用,这样就不会显示任何错误了?

  • 我试图在一个网站上获得一个内容列表(若有人感兴趣的话,这一个)。布局最近发生了变化,现在他们不会一次加载所有内容,而是使用magic(可能是js)。我目前正在使用JSoup分析HTML,但我愿意接受建议。 这就是我得到的: 实现此目的的代码: 这是我想看到的(复制从检查元素后,页面加载了所有的内容): 谷歌帮不了什么忙,因为与微调器等相关的所有内容都与javascript有关。 解决方案: 由于J