vb.net WebBrowser在默认浏览器中打开链接

时间:2013-11-21 12:07:34

标签: vb.net webbrowser-control

我想在我的程序中显示图片广告,我使用网络浏览器工具并发布链接广告。我想在用户的默认浏览器中打开广告链接。

在网络浏览器“网址”中,我使用:“http://name.com/ads.html#num1

这个“num1”是:

<div id="num1">
    <a href="http://google.com" target="_blank"> 
        <img src="img/num1.png" />
    </a>
</div>

我需要在默认浏览器中打开此链接。

2 个答案:

答案 0 :(得分:1)

我知道这已经很久了 扩展Andrea的答案我以这种方式使所有URL都有效:

Private docComplete As Boolean = False
    Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        docComplete = True
    End Sub

Private Sub WebBrowser1_Navigating(sender As Object, e As WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
    If docComplete Then
        ' Process.Start(e.Url.ToString)
        openULR(e.Url.ToString) 'start process by a default browser
        e.Cancel = True
    End If
End Sub

只是为了确保链接触发事件我将html中的_blank标记替换为_self,如下所示:

 html = Replace(html, "target=""_blank""", "target=""_self""")

答案 1 :(得分:0)

您可以使用WebBrowser的Navigating事件并尝试取消将事件重定向到默认浏览器的事件。

问题是每次在WebBrowser控件中加载网页时都会发生此事件。为避免重定向每个navigating事件,您可以过滤目标网址(如果这是一个可接受的解决方案):

Private Sub WebBrowser1_Navigating(sender As Object, e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
    If e.Url.ToString = "http://google.com/" Then
        Process.Start(e.Url.ToString)
        e.Cancel = True
    End If
End Sub

为了使此解决方案有效,您还必须将html页面切换目标从_blank更改为_self,否则将不会触发Navigating错误:

<a href="http://google.com" target="_self"> 
    <img src="img/num1.png" />
</a>