大多数网站页面在基于Chromium的Android 4.4 (和更新版本) webview上运行良好。但最近我发现一个网站页面在4.4 (或更高版本)和早期的Android系统中表现不同。
早期安卓系统上的webview运行正常,但在KitKat上却不能。我相信页面里面一定有一些技巧。但是几周后我仍然被这个问题卡住了..:(
你能帮帮忙吗?非常感谢。
代码如下:
WebView WV_test = (WebView) findViewById(R.id.WV_query);
WV_test.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
WV_test.getSettings().setDomStorageEnabled(true);
WV_test.getSettings().setJavaScriptEnabled(true);
WV_test.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.v("attlog", "onPageStarted: url="+url);
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
Log.v("attlog", "onPageFinished: url="+url);
super.onPageFinished(view, url);
}
@Override
public void onLoadResource(WebView view, String url) {
Log.v("attlog", "onLoadResource() url="+url);
super.onLoadResource(view, url);
}
});
String url="http://railway.hinet.net/ccancel_rt.jsp";
Log.v("attlog", "url="+url );
WV_test.loadUrl( url );
在早期webkit (即4.1)上的结果与预期一致:
url=http://railway.hinet.net/ccancel_rt.jsp
onPageStarted: url=http://railway.hinet.net/ccancel_rt.jsp
onLoadResource() url=http://railway.hinet.net/ccancel_rt.jsp
onLoadResource() url=http://railway.hinet.net/4QbVtADbnLVIc/c.FxJzG50F.js?D9PVtGL=a5c631
onPageFinished: url=http://railway.hinet.net/ccancel_rt.jsp
onPageStarted: url=http://railway.hinet.net/ccancel_rt.jsp?y7bRbP=VGpKrPbgT_Gvfun_k1ojGcgiy4_vWPRY
onLoadResource() url=http://railway.hinet.net/ccancel_rt.jsp?y7bRbP=VGpKrPbgT_Gvfun_k1ojGcgiy4_vWPRY
onPageFinished: url=http://railway.hinet.net/ccancel_rt.jsp?y7bRbP=VGpKrPbgT_Gvfun_k1ojGcgiy4_vWPRY
onPageStarted: url=http://railway.hinet.net/ccancel_rt.jsp?y7bRbP=VGpKrPbgTTsO9yRbWE8r.3PN0Bo5YqTE
onLoadResource() url=http://railway.hinet.net/ccancel_rt.jsp?y7bRbP=VGpKrPbgTTsO9yRbWE8r.3PN0Bo5YqTE
onLoadResource() url=http://railway.hinet.net/CssStyle/master.css
onLoadResource() url=http://railway.hinet.net/4QbVtADbnLVIc/d.FxJzG50F.js?D9PVtGL=a5c631
onLoadResource() url=http://railway.hinet.net/Images/title_08.jpg
onLoadResource() url=http://railway.hinet.net/Images/title_bg.jpg
onPageFinished: url=http://railway.hinet.net/ccancel_rt.jsp?y7bRbP=VGpKrPbgTTsO9yRbWE8r.3PN0Bo5YqTE
onLoadResource() url=http://railway.hinet.net/4QbVtADbnLVIc/jW39ezbWPr.js?65MRT9vNU1rhU6TUrOf4kG=z_qkPe3KO5xVeYHXURGyC2YnDCN9LkApa6fFzTFwRKxB8rgzZVI1f9oOmXb5gCrR4wmBCuVwxLbgQMAgUDev1iZgpQCdspYd
但是在4.4和更高版本的基于Chromium的webkit上的结果看起来像这样:
V/attlog: url=http://railway.hinet.net/ccancel_rt.jsp
W/EGL_genymotion: eglSurfaceAttrib not implemented
E/OpenGLRenderer: Getting MAX_TEXTURE_SIZE from GradienCache
E/OpenGLRenderer: MAX_TEXTURE_SIZE: 16384
E/OpenGLRenderer: Getting MAX_TEXTURE_SIZE from Caches::initConstraints()
E/OpenGLRenderer: MAX_TEXTURE_SIZE: 16384
D/OpenGLRenderer: Enabling debug mode 0
W/AwContents: nativeOnDraw failed; clearing to background color.
W/AwContents: nativeOnDraw failed; clearing to background color.
I/chromium: [INFO:simple_index_file.cc(437)] Simple Cache Index is being restored from disk.
V/attlog: onPageStarted: url=http://railway.hinet.net/ccancel_rt.jsp
V/attlog: onLoadResource() url=http://railway.hinet.net/ccancel_rt.jsp
V/attlog: onPageFinished: url=http://railway.hinet.net/ccancel_rt.jsp
V/attlog: onLoadResource() url=http://railway.hinet.net/favicon.ico
I/chromium: [INFO:async_pixel_transfer_manager_android.cc(60)] Async pixel transfers not supported
E/chromium: [ERROR:gles2_cmd_decoder_autogen.h(1082)] [GroupMarkerNotSet(crbug.com/242999)!:884AB3B7]GL ERROR :GL_INVALID_OPERATION : GetIntegerv: <- error from previous GL command
I/chromium: [INFO:async_pixel_transfer_manager_android.cc(60)] Async pixel transfers not supported
E/chromium: [ERROR:gles2_cmd_decoder_autogen.h(1082)] [GroupMarkerNotSet(crbug.com/242999)!:4872B4B7]GL ERROR :GL_INVALID_OPERATION : GetIntegerv: <- error from previous GL command
很感谢你。
发布于 2017-04-09 16:12:09
试着在你的WebView上设置一个WebChromeClient,也许是Javascript的问题。正如这里所讨论的,在不设置WebChromeClient的情况下,未启用Javascript执行:Enabling general JavaScript in WebViewClient
WV_test.setWebChromeClient(new WebChromeClient());
WV_test.loadUrl(...);
这会改变什么吗?
https://stackoverflow.com/questions/43302209
复制相似问题