webview加载网页,但加载后某些内容会消失(Android Studio)

时间:2018-01-30 06:39:08

标签: javascript android android-webview

我尝试在网页浏览中查看http://artikelweb.com网页很好地显示。但是,每当我去来自" Popular Authors"部分,会显示网页,但加载后,引号不会显示

在Google Chrome浏览器(移动版)中,加载后会显示引号

Mobile Chrome View is here

但是,在我的应用中,引号未显示在网络视图中。

My app view is here

代码段:

@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();
    }
}

3 个答案:

答案 0 :(得分:1)

使用一些库进行Webview。 请查看此链接。AdvancedWebview

答案 1 :(得分:0)

将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>");

答案 2 :(得分:0)

在您的特定情况下,您必须启用DOM Storage 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。

enter image description here

enter image description here

当然,你可以利用第三方库,但你不会再知道为什么这个确切的案例适用于第三方库,而不是默认的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因安全原因而禁用的许多选项。