Android 4.4(KitKat)和较新的Chromium webview加载页面不完整

时间:2017-04-09 01:51:13

标签: javascript android webview webviewchromium

大多数网站页面在Android 4.4(及更新版本)基于Chromium的webview上运行良好。但最近我发现一个网站页面在4.4(或更新)和早期的Android系统之间表现不同。

早期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
&#13;
&#13;
&#13;

欣赏。

1 个答案:

答案 0 :(得分:0)

尝试在WebView上设置WebChromeClient,这可能是一个Javascript问题。 如此处所述,未设置WebChromeClient Javascript执行未启用: Enabling general JavaScript in WebViewClient

WV_test.setWebChromeClient(new WebChromeClient());
WV_test.loadUrl(...);

这会改变什么吗?