总算问题解决差不多了,把所有测试机装上试试,结果在2.3.x的手机上有些地方完全无效,查看下,都是shouldOverrideUrlLoading这个里面的,崩溃啊。。。
立马找解决方法,为什么都找不到,好烦啊,无意间就看到一个说 android 2.3.x webview中的两个搞笑的bug(这个百度就有,想具体看的话就自己搜下咯),也只有这个了,就进去看了下,原来js的几种写法会引起shouldOverrideUrlLoading无效啊,贴出来供大家看哦,也好注意可千万别弄成这样。。。。
以下这个url打开的动作,自定义的webview截获不了:
a. js中setTime之后,自定义的webview截获不了
b. Ajax中,作为callback处理,给location.href赋值
c. form提交中的url迁移
我这里的也是这几种情况中的一种吗?不知道啊不知道。。。问了也不清楚,算了,再找找,看看会不会有解决的方法。。。
还真让我找到一个,参考网址: http://tanghaibo001.blog.163.com/blog/static/9068612020121023113646644/
具体的都有说明了。反正就是在2.3.x系统下的如果是通过js跳转的,那么就最好把shouldOverrideUrlLoading 中的逻辑写到 onPageStarted 方法中去处理,因为在ApiLevel小于11的情况下,webview的shouldOverrideurlLoading并不是每次都会调用。
但是不清楚怎么写啊要,因为我这逻辑判断很多,一写,不是这出问题就是那出问题,最后总算是一点点的写出来了。。。。
注意:
如果在onPageStarted里写的话,最好不要出现view.loadUrl(url);因为如果有这个,页面会一直在这里跳动,至少我都注释掉也没发现报错。。。
还有就是如果里面逻辑判断很多,那么一定要想好该怎么放怎么写,并不是shouldOverrideUrlLoading 里怎么写 onPageStarted 里面就必须写的。。。。。
立马找解决方法,为什么都找不到,好烦啊,无意间就看到一个说 android 2.3.x webview中的两个搞笑的bug(这个百度就有,想具体看的话就自己搜下咯),也只有这个了,就进去看了下,原来js的几种写法会引起shouldOverrideUrlLoading无效啊,贴出来供大家看哦,也好注意可千万别弄成这样。。。。
以下这个url打开的动作,自定义的webview截获不了:
a. js中setTime之后,自定义的webview截获不了
b. Ajax中,作为callback处理,给location.href赋值
c. form提交中的url迁移
我这里的也是这几种情况中的一种吗?不知道啊不知道。。。问了也不清楚,算了,再找找,看看会不会有解决的方法。。。
还真让我找到一个,参考网址: http://tanghaibo001.blog.163.com/blog/static/9068612020121023113646644/
具体的都有说明了。反正就是在2.3.x系统下的如果是通过js跳转的,那么就最好把shouldOverrideUrlLoading 中的逻辑写到 onPageStarted 方法中去处理,因为在ApiLevel小于11的情况下,webview的shouldOverrideurlLoading并不是每次都会调用。
但是不清楚怎么写啊要,因为我这逻辑判断很多,一写,不是这出问题就是那出问题,最后总算是一点点的写出来了。。。。
注意:
如果在onPageStarted里写的话,最好不要出现view.loadUrl(url);因为如果有这个,页面会一直在这里跳动,至少我都注释掉也没发现报错。。。
还有就是如果里面逻辑判断很多,那么一定要想好该怎么放怎么写,并不是shouldOverrideUrlLoading 里怎么写 onPageStarted 里面就必须写的。。。。。