[C#] WebBrowser 控制項禁止開啟新瀏覽器視窗
一、問題描述
使用 WebBrowser 控制項時,假如有開新網頁的超連結時,會自動開啟新瀏覽器視窗來瀏覽網頁,如何禁止開啟新瀏覽器視窗?
二、方法
可以透過取消 WebBrowser.NewWindow 事件 : 發生於開啟新瀏覽器視窗之前。
呼叫 Navigate 方法的適當多載時,或當使用者將滑鼠指標停留在超連結上方並按一下瀏覽器快速鍵功能表的 [在新視窗開啟] 選項時,WebBrowser 控制項便會開啟不同的瀏覽器視窗。NewWindow 事件是發生於開啟新瀏覽器視窗之前。例如,可處理這個事件,以避免在未符合特定條件時開啟視窗。
參考以下程式碼 :
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.dotblogs.com.tw/chou");
}
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
e.Cancel = true;
}
另外,我們可以判斷某些網頁才能開啟新瀏覽器視窗進行瀏覽
參考以下程式碼,當 WebBrowser.StatusText 包含指定字串 www.dotblogs.com.tw/chou 才能開啟新瀏覽器視窗進行瀏覽。
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.dotblogs.com.tw/chou");
}
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
if (webBrowser1.StatusText.IndexOf("www.dotblogs.com.tw/chou", StringComparison.OrdinalIgnoreCase) == -1)
{
e.Cancel = true;
}
}