我使用DotNetBrowser并希望在單擊鏈接時在新視窗/winform/選項卡中打開鏈接但是當我們單擊任何鏈接時DotNetBrowser在當前視窗中打開它們我知道我應該覆寫DotNetBrowser事件但是我不知道哪個事件,另外我嘗試CreatePopupHandler但不作業,我在任何地方都找不到任何示例DotNetBrowser希望你們能幫助我。
uj5u.com熱心網友回復:
CreatePopupHandler當引擎想知道是否可以創建彈出視窗時呼叫處理程式。基本上,您通常可以使用它來允許或禁止創建彈出視窗。
如果CreatePopupHandler處理程式允許創建彈出視窗,OpenPopupHandler則呼叫處理程式。在此處理程式中,您可以訪問創建的彈出視窗并在必要時顯示它。
當您初始化 WinForms 時BrowserView,它會自動IBrowser使用CreatePopupHandler和OpenPopupHandler處理程式的默認實作配置給定實體。
在這種情況下,在新視窗(彈出)中打開鏈接有兩種情況:
- 該
window.open()JavaScript函式:
window.open("https://www.google.com", "_blank",
"resizable=yes, top=500, left=500, width=400, height=400");
- 帶有
target屬性的鏈接:
<a href="https://www.google.com" target="_blank">Open Google</a>
要在導航嘗試(例如單擊鏈接)時在單獨的視窗或選項卡中加載任何 URL,您需要使用StartNavigationHandler攔截所有或所需的導航請求。在處理程式實作中,您需要使用瀏覽器創建一個新視窗或選項卡,將這個 URL 加載到其中,并取消其在原始瀏覽器中的加載。例如:
browser.Navigation.StartNavigationHandler =
new Handler<StartNavigationParameters, StartNavigationResponse>((p) =>
{
// Intercept all navigation requests to the URLs that start
// with "https://dotnetbrowser" and load them into a new form
if (p.Url.StartsWith("https://dotnetbrowser"))
{
BeginInvoke((Action)(() =>
{
LoadNewWindow(p.Url);
}));
return StartNavigationResponse.Ignore();
}
return StartNavigationResponse.Start();
});
browser?.Navigation.LoadUrl("https://teamdev.com/dotnetbrowser");
LoadNewWindow實施:
private void LoadNewWindow(string url)
{
var browser1 = engine.CreateBrowser();
BrowserView browserView = new BrowserView
{
Dock = DockStyle.Fill
};
browserView.InitializeFrom(browser1);
Form form = new Form();
form.Width = 800;
form.Height = 600;
form.Closed = delegate
{
form.Controls.Clear();
if (!browser1.IsDisposed)
{
browser1.Dispose();
}
};
form.Controls.Add(browserView);
form.Show();
browser1.Navigation.LoadUrl(url);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/419096.html
標籤:
上一篇:WPF學習筆記(四):AvalonEdit 代碼高亮編輯控制元件專題
下一篇:如何將值添加到特定的二維陣列
