当使用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();
}
}
答案 0 :(得分:0)
这可能不是您的代码的问题。它可能是IE7的锚点错误。我一直遇到锚点不能在IE7中工作的问题。显然,有时会发生这种情况,有时则不然。
答案 1 :(得分:0)
我似乎也遇到了这个问题。当我有一个包含锚点的URL(例如http://cnn.com/#foo)时,webbrowser控件拒绝加载。我发誓这是有效的,但我认为微软必须重新引入这个错误,假设他们以前修过它(或者我的测试系统可能没有得到包含这个错误的更新)。