HTML,css,js 在 android 中从 sdcard 加载 html 到 webview 时出现问题?

HTML,css,js issue when loading html from sdcard to webview in android?

我正在将 html 文件从 sdcard 加载到 webview,但是当我从 sdcard 加载 html 到 webview 时,它无法正确加载 css 并且图像和视频未在 webview 中加载.

Work With 4.4 kitkat and chrome version
Not Work With below 4.4 kitkat version

我已经尝试在 loadUrl 和 loadDatawithBaseurl 中直接传递 url 两种方式,但对我来说没有任何效果。

    mWebview=(WebView)findViewById(R.id.webview);
    mWebview.getSettings().setJavaScriptEnabled(true);
    mWebview.setWebChromeClient(new WebChromeClient());
    mWebview.setWebViewClient(new WebViewClient());
    mWebview.loadUrl("file:///storage/emulated/0/13119/news66.html");

也试试这个

 data=getHTMLDataBuffer("file:///storage/emulated/0/13119/news66.html");
 mWebview.loadDataWithBaseURL("file://"+Environment.getExternalStorageDirectory().getAbsolutePath().toString()+"/13119/",data,"text/html","UTF-8", null);

Chrome ScreenShot

Webview ScreenShot

您的网页中似乎有一些媒体(视频、图片)尚未加载。

尝试:

  • 为您的应用添加互联网权限。媒体未加载可能是因为它来自互联网,但您没有互联网许可,因此 webview 不会加载它(这可以解释为什么它在 Chrome 中加载正常)

  • 所有 HTML 文件都会出现这种情况吗?有一些 webview 不支持的新标准,但 chrome 支持,这可以解释为什么它不起作用。

  • 尝试在不同的浏览器中加载您的 HTML 文件,看看它是否有效。

  • 您可以将您的 HTML 文件上传到某处(先压缩),我会全部查看。

编辑:你的 HTML 不好。在 news66 中我看到:

body { margin:0;background: url("TS-INFO-16-9-HD.png") no-repeat scroll center center / 1920px 100% rgba(0, 0, 0, 0); height:100% important; overflow:hidden; }

更改为:

body { margin:0;background: url("TS-INFO-16-9-HD.png") no-repeat scroll center center; height: 100%; }

并且有效。其他所有类似。

问题可能是您的背景图片太大或 "not supporting" 类型。您的 chrome 浏览器已完全设置 webview,而您的 webview 可能没有。 所以使 webview 渲染过程更容易。使用一些网络视图功能,如

webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
webView.getSettings().setPluginsEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.setHorizontalScrollBarEnabled(false);
webView.getSettings().setDomStorageEnabled(true); 

搜索 webview 设置。还有更多。