关于JDIC超链接打开窗口问题的解决方案

来源:互联网 发布:safari无痕浏览 知乎 编辑:程序博客网 时间:2024/04/27 16:07

JDIC这个web brower用了一下,功能还算是可以,不过,有BUG,网上又找版本只有0.9.5这个版本,就将就用了一下,小程序了,

运行以后发觉,某些会弹窗口的超链接,就会打开窗口,妈的,我就花了N多力气去网上找资料,网上的资料从来没有一个人说实话,也没有一个好像是高手,气得我直跺脚,又是只能自己解决,每次都这样,也不知道是不是大家就这样,还是水平好的人,不展示一下。

实在是气不过,于是写个出来以后有和一样的朋友,不会这么辛苦。


先找到资料可以阻止窗口打开的方法

重新写webbrower这个类中的两个方法

protected boolean willOpenURL(URL arg0) {
                return super.willOpenURL(arg0);
            }

            protected boolean willOpenWindow(){
             
                return false;
            }

第一个方法是跳转,第二个就是将要打开窗口前的验证,

于是我想如何才能得到这个打开前的地址,可是这里根本无法得到,于是我用方法getURL(),当在willOpenWindow中放入getURL时,窗口又重新弹出,于是我明白了,这个方法一定是willOpenWindow之后调用的,无计可施了,只用其它的招数,

这个WEBBROWER里有一个监听,我想找找资料有没有对超链接进行监听的,可是找了N久也没有

只用对整个WEBBROWER这个进行监听,监听的有文档完成、下载开始、下载结束、还有状态栏变化、

根本就没有超链接的处理

最终是根本无法处理,最后想了一个招,把状态的地址链接拿过来

然后进行分析,是否是地址,如果是地址,就在willOpenWindow中把这个地址set到这个浏览器里

public void statusTextChange(WebBrowserEvent arg0) {
                // TODO Auto-generated method stub
                if(!arg0.getData().equals("完成")){
                    try {
                        browerUrl = new URL(arg0.getData());
                    } catch (MalformedURLException e) {
                        browerUrl = null;
                    }
                }
            }


protected boolean willOpenWindow(){
                brower.setURL(browerUrl);
                return false;
            }

复制出代码,希望大家也能顺利解决。

原创粉丝点击