Android WebView上的getBoundingClientRect错误

Android WebView上的getBoundingClientRect错误,android,google-maps-api-3,android-webview,Android,Google Maps Api 3,Android Webview,我正在为一个使用谷歌地图和地理位置的网站编写一个包装程序。我遇到的问题是,在普通浏览器中,页面功能正常,但在WebView中,两个手指的缩放不起作用,它会用以下错误淹没日志: 05-24 08:14:28.504:E/Web控制台(21166):未捕获类型错误:无法读取位于http:///index.php:28 问题是,这个函数只在Google的JS代码中使用,而不是在我们的代码中使用,所以我对它没有太大的控制力。我应该如何开始解决这个问题 这里有一些(可能)与你相关的信息来源,只需最低限度的

我正在为一个使用谷歌地图和地理位置的网站编写一个包装程序。我遇到的问题是,在普通浏览器中,页面功能正常,但在WebView中,两个手指的缩放不起作用,它会用以下错误淹没日志:

05-24 08:14:28.504:E/Web控制台(21166):未捕获类型错误:无法读取位于http:///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);

无论使用什么对象来调用
getBoundingClientRect
都是
null
——所以问题就从这里开始了。你能看看原始的JS代码吗(在网站上,它调用Google的API)

我在为webview设置自定义用户代理时遇到了这个问题。在我将其改回默认用户代理后,问题就解决了。

该站点不使用该函数调用,它只在Google的API中找到,在一个用URL调用的脚本中
http://maps.gstatic.com/cat_js/intl/en_us/mapfiles/api-3/7/17/%7Bcommon,地图,工具,几何体,方向%7D.js
,所以编辑起来相当困难……这仍然指出了问题所在:gmap使用的
或其他DOM元素,脚本想要知道它的度量。在我看来,脚本传递了一个不存在的
(地图将显示的位置)的名称。好的,那么如何调试它呢?由于错误只出现在WebView中,而不出现在任何浏览器中,因此我无法使用常用的调试工具。你这边也有一些JS代码,对吗?您正在加载
HOMEURL
。我想那还是站在你这边对吧?看看这里的HTML和JS。我将从接收Google地图的DIV的名称开始。情况并非如此,因为即使使用类似于此测试页面的基本页面也会触发错误: