做一个功能,遇到的webview的一些问题,整理下

来源:互联网 发布:java保存上传文件 编辑:程序博客网 时间:2024/06/14 00:02

第一个问题 :

描述:首先说下需求,我们项目中有在本地打开一个网页的需求,这个网页中可能会内嵌一些资源,如,视屏,音频,图片什么的,并且这些资源都是相对路径(以为会是难点,结果,不用做什么处理鄙视),而且因为服务端视乎是通过不同的库查出来的,所以这个结构都是每一个资源(现在来说只有视屏和音频)使用这个新的网页,并且通过iframe内嵌到主网页,并且存在许多的超链接。

问题:因为原来没做过什么webview的开发,所以就上网上搜了一下,简单的实现,但是存在问题,就是当加载到视屏或者是音频的信息的时候,会单独使用一个新的网页来加载。

原因:通过多次debug发现,原因是因为 在设置webview的 :

public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadurl(url);
            return true;
        }

  这个方法造成的,我发现,在每次点击超链接,或者是执行iframe 引入的时候都会调用,点击超链接没事,但是iframe为什么走这个啊。。。

解决方法:改为 reture false就好了,但是注意,要做下判断。


第二个问题:

描述:需要在一个网页加载完成之后,服务端再通过jsbridge,调用一下移动端的方法,但是这个调用时机,服务端拿不到(是相对于Android来说的,ios那边没问题鄙视)这个其实不是移动端的问题,但是要配合服务端解决。

解决方法:服务端将调用的放到了 _jsBridgeReady 这个方法中,就可以在一个网页加载完成后,调用了。


第三个问题:

描述:需要在一个webview上面显示一个按钮,这个按钮,会随着网页的滑动而滑动。这个按钮是本地加的,不是在网页上面(比较坑,为什么不在网页上显示呢?整的现在各种问题)

问题:想了几个方式都不行,后来就使用监听滑动事件,然后设置给按钮,不停的跟新位置,(这是他的功能奇葩,虽然我的解决方法也不怎么样生气),但是。。。滑动可以无限的,但是一个网页是有顶部和底部的,如果滑到了顶部继续滑动,直接就飞了。。。。

解决方法: 使用 webView.getScrollY()  他获取的是网页的顶部和webview的顶部的距离, 也就是滑动的距离,然后,setlayout一下,就ok了,,但是发现了一个问题,如果通过脚本从底部回到顶部去,那么在4.2 的系统中不会显示(可能没有获取到这个滑动距离),5.0 6.0 系统测试可以拿到。。


最后,推荐一篇好的webview的博客  http://www.2cto.com/kf/201410/344390.html 


0 1
原创粉丝点击