ASP.NET 导航到隐藏代码中的锚点
我有一个简单的 Web 表单,其代码如下:
//...
//tons of text
//...
<a name="message" />
//...
//tons of text
//...
<asp:Button ID="ButtonSend"
runat="server"
text="Send"
onclick="ButtonSend_Click" />
POST 之后,我想将用户导航到我的锚点“消息”。 我有以下代码:
protected void ButtonSend_Click(object sender, EventArgs e)
{
this.ClientScript.RegisterStartupScript(this.GetType(),
"navigate",
"window.location.hash='#message';",
true);
}
这个简单的 JavaScript 在 Firefox 3.5.2 中不起作用 - 浏览器中的 url 正在更改,但页面未导航到锚点。 在 IE 8 中它运行得很好。
为什么这段 JavaScript 代码在 Firefox 中不起作用? 我错过了什么吗?
I have a simple Web Form with code like this:
//...
//tons of text
//...
<a name="message" />
//...
//tons of text
//...
<asp:Button ID="ButtonSend"
runat="server"
text="Send"
onclick="ButtonSend_Click" />
After POST I want to navigate user to my anchor "message". I have following code for this:
protected void ButtonSend_Click(object sender, EventArgs e)
{
this.ClientScript.RegisterStartupScript(this.GetType(),
"navigate",
"window.location.hash='#message';",
true);
}
This simple JavaScript is not working in Firefox 3.5.2 - url is changing in browser but page is not navigated to anchor. In IE 8 it works perfectly.
Why this JavaScript code is not working in Firefox? Am I missing something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我已经解决了我的问题。 JavaScript 代码在我的锚点存在之前就被调用了。 这就是 Firefox 不向下滚动页面的原因。
我的代码现在看起来像这样:
页面加载后,我正在调用我的简单 JavaScript 函数。
找到解决方案的关键是克莱顿的回答。 Firebug 报告 getElementById 返回 null 引用。 然后我按照 andrewWinn 的建议查看了生成的 HTML - JavaScript 在锚点存在之前被调用。 做了一点谷歌搜索并找到了解决方案。
感谢您的回答!
I've solved my problem. JavaScript code was called before my anchor even existed. That's why Firefox wasn't scroll page down.
My code looks now like tihs:
After page load I'm calling my simple JavaScript function.
The key to found solution was Cleiton answer. Firebug reports that getElementById was returning null reference. Then I looked at generated HTML like andrewWinn suggested - JavaScript was called before anchor existed. Made little googling and found solution.
Thanks for your answers!
门多萨,您可以使用原生的 scrollIntoView 函数。
要做你想做的事,只需写:
Mendoza, you can use native scrollIntoView function.
To do what you want, just write:
我遇到过一次。 你看过实际的 HTML 吗? 如果我记得的话,FireFox 在锚点上区分大小写。 我不知道最近有没有改变。
I ran into this once. Have you taken a look at the actual HTML? If I remember, FireFox was being case sensative on the anchors. I don't know if that changed recently or not.
您可以尝试使用 jQuery LocalScroll 插件。 使用此功能,您可以滚动使用:
或使用 ASP.NET 代码:
这不是一个理想的解决方案,特别是如果您尚未在项目中的任何位置使用 jQuery,但它可能会解决您的问题。
You could try using the jQuery LocalScroll plugin. Using this, you could scroll using:
Or with your ASP.NET code:
It's not an ideal solution, especially if you're not using jQuery anywhere in your project already, but it might solve your problem.