Я вижу очень странное поведение при использовании элемента управления веб-браузера c # и ссылки с якорями в нем. Ох, и это поведение, кажется, происходит только в ie7 в ie8, это нормально!
Я создал простую форму с элементом управления веб-браузера.
Я добавил новый WebBrowserNavigatedEventHandler для загрузки некоторого html после того, как браузер загрузил первую страницу. Прямая ссылка на Google работает нормально, но ссылка на страницу википедии и точку привязки ничего не делает.
Если, однако, я перехожу на страницу с якорями в ней (или ссылки на другую страницу со ссылками, она работает нормально)!
Так что проблемы могут быть связаны со страницей, которую я загружаю в первый раз / как я ее загружаю.
Вот код, который я написал, любые предложения будут оценены.
Edit:
Я только что заметил, что если я изменю строку
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();
}
}