[英]How to simulate a “open link on new window” on a C# WebBrowser?
我剛剛發現,為了模擬點擊,我可以調用element.InvokeMember("click");
其中element
是一個HtmlElement
。 但我真正需要的是在新窗口中打開鏈接,但不是在默認瀏覽器上,而是在我的程序中創建的另一個WebBrowser
。 有時通過調用element.GetAttribute("href");
來獲取href屬性是有效的element.GetAttribute("href");
然后只是導航到返回的URL,但是一些挑剔的網頁不會以這種方式工作,我假設與cookie和會話有關。
System.Windows.Forms.WebBrowser
是一個非常殘缺的控件,也是它最大的問題之一 - 支持多標簽。 它根本不支持它。
我花了很多時間嘗試讓它正常工作,但沒有取得足夠的成功,所以建議你嘗試第三方控制。
解決方法:訂閱頁面上每個<a>
點擊事件(或您需要的其中一些)並手動創建新窗口。 例如,看看它是如何在dotBrowser中實現的: 1 2
foreach (HtmlElement tag in webBrowser.Document.All)
{
tag.Id = String.Empty;
switch (tag.TagName.ToUpper())
{
case "A":
{
tag.MouseUp += new HtmlElementEventHandler(link_MouseUp);
break;
}
}
}
private void link_MouseUp(object sender, HtmlElementEventArgs e)
{
mshtml.HTMLAnchorElementClass a = (mshtml.HTMLAnchorElementClass)((HtmlElement)sender).DomElement;
switch (e.MouseButtonsPressed)
{
case MouseButtons.Left:
{
// open new tab
break;
}
case MouseButtons.Right:
{
// open context menu
break;
}
}
}
只需處理NewWindow2事件,創建一個包含webbrowser的表單/選項卡,並使用webbrowser作為新窗口請求的目標。 有關示例,請訪問http://www.codeproject.com/KB/cpp/ExtendedWebBrowser.aspx 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.