none
在webBrowser1中点击链接,如何限制他只在webBrowser中打开 RRS feed

  • 问题

  •   我现在在 webBrowser1中加载一个网页 ,网页上的链接如果是 target="_blank" 点击后就会 在默认的浏览器(如:IE)中打开!
       我想让他只在我的 webBrowser1中打开,肿么办呢?

    我是半路出家,而且是自学 学的是C#语言,希望回帖的高手们留意一下,谢谢大家的帮助

    2012年12月23日 2:26

答案

  • 你好,

    你可以将链接的target="_blank"改为target="self ",并使用e.Cancel=true,取消息打开新窗口动作。

    如:

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        //将所有的链接的目标,指向本窗体
        foreach (HtmlElement archor in this.webBrowser1.Document.Links)
        {
            archor.SetAttribute("target", "_self");
        }
        //将所有的FORM的提交目标,指向本窗体
        foreach (HtmlElement form in this.webBrowser1.Document.Forms)
        {
            form.SetAttribute("target", "_self");
        }
    } 
    private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
    {
         e.Cancel = true;
    }

    请参考以下链接:

    http://www.cnblogs.com/hfzsjz/archive/2012/11/21/2780169.html

    http://blog.csdn.net/maji9370/article/details/4938865

    希望对你有所帮助。


    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 lkf18 2012年12月25日 11:08
    2012年12月24日 5:49
    版主

全部回复

  • 你好,

    你可以将链接的target="_blank"改为target="self ",并使用e.Cancel=true,取消息打开新窗口动作。

    如:

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        //将所有的链接的目标,指向本窗体
        foreach (HtmlElement archor in this.webBrowser1.Document.Links)
        {
            archor.SetAttribute("target", "_self");
        }
        //将所有的FORM的提交目标,指向本窗体
        foreach (HtmlElement form in this.webBrowser1.Document.Forms)
        {
            form.SetAttribute("target", "_self");
        }
    } 
    private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
    {
         e.Cancel = true;
    }

    请参考以下链接:

    http://www.cnblogs.com/hfzsjz/archive/2012/11/21/2780169.html

    http://blog.csdn.net/maji9370/article/details/4938865

    希望对你有所帮助。


    Lisa Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 lkf18 2012年12月25日 11:08
    2012年12月24日 5:49
    版主
  • 你好!

    在 WebBrowser 的 NewWindow 事件中取消原有请求,然后获取 A 连接的地址重新导航,如下:

    this.webBrowser1.NewWindow += (o, e) =>
    {
        e.Cancel = true;
    
        var url = webBrowser1.Document.ActiveElement.GetAttribute("href");
    
        if (!string.IsNullOrWhiteSpace(url))
            this.webBrowser1.Navigate(url);
    };

    知识改变命运,奋斗成就人生!

    2012年12月24日 5:52
    版主