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 设置。还有更多。
我正在将 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 设置。还有更多。