浏览器中带有 target='_blank' 的 GeckoFX 超链接
GeckoFX hyperlink with target='_blank' in browser
我需要来自 geckowebbrowser1 的 target='_blank' 的超链接,以便在 geckowebbrowser2 中打开,而不是在新 window 中打开。
private void geckowebbrowser1_CreateWindow(object sender, GeckoCreateWindowEventArgs e)
{
geckowebbrowser2.Navigate(e.Uri);
}
但无论如何都会创建一个新的 window :(
查看源代码,您可以通过将 Cancel
设置为 false 来避免创建新的 window,如下所示:
private void geckowebbrowser1_CreateWindow(object sender, GeckoCreateWindowEventArgs e)
{
e.Cancel = true;
geckowebbrowser2.Navigate(e.Uri);
}
如果您有兴趣,这里是源代码的一部分,它处理新 window 的创建和调用 CreateWindow 事件处理程序:
GeckoWebBrowser browser = parent as GeckoWebBrowser;
if (browser != null)
{
var e = new GeckoCreateWindowEventArgs(flags);
browser.OnCreateWindow(e);
if (e.Cancel)
{
cancel = true;
return null; // When you set cancel to true on your end, the below code for creating a new window won't run
}
if (e.WebBrowser != null)
{
// set flags
((nsIWebBrowserChrome) e.WebBrowser).SetChromeFlagsAttribute(chromeFlags);
return e.WebBrowser;
}
nsIXULWindow xulChild = AppShellService.CreateTopLevelWindow(null, null, chromeFlags, e.InitialWidth, e.InitialHeight);
return Xpcom.QueryInterface<nsIWebBrowserChrome>(xulChild);
}
return null;
我需要来自 geckowebbrowser1 的 target='_blank' 的超链接,以便在 geckowebbrowser2 中打开,而不是在新 window 中打开。
private void geckowebbrowser1_CreateWindow(object sender, GeckoCreateWindowEventArgs e)
{
geckowebbrowser2.Navigate(e.Uri);
}
但无论如何都会创建一个新的 window :(
查看源代码,您可以通过将 Cancel
设置为 false 来避免创建新的 window,如下所示:
private void geckowebbrowser1_CreateWindow(object sender, GeckoCreateWindowEventArgs e)
{
e.Cancel = true;
geckowebbrowser2.Navigate(e.Uri);
}
如果您有兴趣,这里是源代码的一部分,它处理新 window 的创建和调用 CreateWindow 事件处理程序:
GeckoWebBrowser browser = parent as GeckoWebBrowser;
if (browser != null)
{
var e = new GeckoCreateWindowEventArgs(flags);
browser.OnCreateWindow(e);
if (e.Cancel)
{
cancel = true;
return null; // When you set cancel to true on your end, the below code for creating a new window won't run
}
if (e.WebBrowser != null)
{
// set flags
((nsIWebBrowserChrome) e.WebBrowser).SetChromeFlagsAttribute(chromeFlags);
return e.WebBrowser;
}
nsIXULWindow xulChild = AppShellService.CreateTopLevelWindow(null, null, chromeFlags, e.InitialWidth, e.InitialHeight);
return Xpcom.QueryInterface<nsIWebBrowserChrome>(xulChild);
}
return null;