2011-09-30 73 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