使用带有ie7和锚点的webbrowser控件的问题

时间:2010-07-12 10:40:19

标签: c# internet-explorer-7 browser hyperlink anchor

当使用c#webbrowser控件和带有锚点的链接时,我看到了一些非常奇怪的行为。哦,这种行为似乎只发生在ie7的ie7中它很好!

我创建了一个带有webbrowser控件的简单表单。

我添加了一个新的WebBrowserNavigatedEventHandler,在浏览器加载第一页后加载一些html。直接链接到Google工作正常,但指向维基百科页面和锚点的链接不起作用。

但是,如果我导航到其中包含锚点的页面(或链接到带链接的其他页面,它可以正常工作)!

所以问题可能出在我第一次加载的页面/我如何加载它。

以下是我编写的代码,我们将不胜感激。

编辑:

我刚注意到,如果我更改了行

this.webBrowser1.Document.Write(html);

为:

this.webBrowser1.DocumentText = html;

它工作正常!!!

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        this.webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_NavigatedLoaddefaultpage);
        this.webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_NavigatedUpdateTextbox);

        this.webBrowser1.Navigate("about:blank");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.webBrowser1.Navigate(this.textBox1.Text);
    }


    void webBrowser1_NavigatedLoaddefaultpage(object sender, WebBrowserNavigatedEventArgs e)
    {
        this.webBrowser1.Navigated -= new WebBrowserNavigatedEventHandler(webBrowser1_NavigatedLoaddefaultpage);

        string html = "<html>";
        html += "<body>";

        html += "<h1>My First Heading</h1>";

        html += "<p>My first paragraph.</p>";

        html += "<a href='http://en.wikipedia.org/wiki/Star_Trek#Production_history'>Star Trek Production history</a>";
        html += "Go to <a href='http://www.google.com'>Google Search</a><br />";
        html += "</body>";
        html += "</html>";
        this.webBrowser1.Document.Write(html);
    }

    void webBrowser1_NavigatedUpdateTextbox(object sender, WebBrowserNavigatedEventArgs e)
    {
        this.textBox1.Text = this.webBrowser1.Url.ToString();
    }
}

2 个答案:

答案 0 :(得分:0)

这可能不是您的代码的问题。它可能是IE7的锚点错误。我一直遇到锚点不能在IE7中工作的问题。显然,有时会发生这种情况,有时则不然。

答案 1 :(得分:0)

我似乎也遇到了这个问题。当我有一个包含锚点的URL(例如http://cnn.com/#foo)时,webbrowser控件拒绝加载。我发誓这是有效的,但我认为微软必须重新引入这个错误,假设他们以前修过它(或者我的测试系统可能没有得到包含这个错误的更新)。