我正在为使用Google地图和地理位置的网站编写一个包装应用。我遇到的问题是,在普通浏览器中,页面正常运行,但在WebView中双指缩放不起作用,并且字面上泛滥日志时出现此错误:
05-24 08:14:28.504: E/Web Console(21166): Uncaught TypeError: Cannot read property 'getBoundingClientRect' of null at http://<mydomain>/index.php:28
问题是,该功能仅用于Google的JS代码,而不是我们的代码,因此我没有太多的权力。我应该如何解决这个问题?
这是一些(可能)相关的来源,只有最小的审查。
myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
mk.setTitle(getString(R.string.loading));
mk.setProgress(progress * 100);
if(progress == 100) {
mk.setTitle(R.string.app_name);
}
}
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
}
});
myWebView.setWebViewClient(new MyWebViewClient());
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setUserAgentString(getString(R.string.useragent));
webSettings.setGeolocationEnabled(true);
webSettings.setBuiltInZoomControls(false);
webSettings.setGeolocationDatabasePath("/data/data/com.mypackage.myapp");
myWebView.addJavascriptInterface(new JSInterface(this), "androidapp");
myWebView.loadUrl(HOMEURL);
答案 0 :(得分:2)
用于呼叫getBoundingClientRect
的任何对象都是null
- 所以问题就出现了。你能看一下原始的JS代码(在网站上,调用Google的API)吗?
答案 1 :(得分:0)
为webview设置自定义用户代理时遇到此问题。将其更改回默认用户代理后,问题就解决了。