2011-09-30 210 views
3

我一直很难找出这一个。 我在eclipse中编写一个插件,它启动Eclipse的内部Web浏览器。到目前为止,我已经打开了内部网页浏览器:从Eclipse的内部网页浏览器获取URL

IWebBrowser browser = PlatformUI.getWorkbench().getBrowserSupport().createBrowser(IWorkbenchBrowserSupport.LOCATION_BAR, null,"Expert Viewer", "Validation"); 
browser.openURL(new URL(some url)); 

我想获取浏览器中打开的当前页面的url。我如何实现这一目标?

+0

有没有什么办法可以做到这一点,而不使用SWT浏览器? – RoflcoptrException

回答

6

使用IWorkbenchBrowserSupport时出现的问题是您不能保证获得内部浏览器。如果内部浏览器不可用,或者工作台配置为使用它等,它可能会打开外部浏览器。

如果您知道您始终需要内部浏览器(并且您只支持内部平台浏览器总是可用的),那么你可以放弃IWorkbenchBrowserSupport接口,并简单地使用org.eclipse.swt.browser.Browser小部件。然后你可以挂接一个LocationListener,例如:

Browser browser = new Browser(parent, SWT.NONE); 
browser.addLocationListener(new LocationListener() { 
    public void changing(LocationEvent event) 
    { 
     System.out.println("Navigating to: " + event.location); 
    } 

    public void changed(LocationEvent event) 
    { 
     System.out.println("Location is: " + event.location); 
    } 
}); 
+0

谢谢!使用swt浏览器也是我的第二个想法。你知道,如果SWT浏览器小部件支持更新的标准,即HTML5,各种插件... – Alternativc

+0

它取决于平台 - 在Windows上,这将是IE浏览器(因此你已经安装的IE版本),在Mac上这将在Safari上,在Linux上,这可能是Firefox或Webkit(取决于Eclipse的版本和安装的浏览器)。所以,这取决于你的配置。我们在Javascript中执行一些检查(使用'Browser#evaluate')来确定浏览器的功能,以确定我们是否可以继续。 –

+0

再次感谢爱德华! – Alternativc