什么会导致访问者返回到上一页的顶部,而不是链接所在页面的位置?
我最近在几个网站上看到了这种奇怪的行为:我向下滚动一个页面并点击链接到另一个页面。 当我单击“后退”按钮并返回时,我回到了上一页的顶部,而不是链接处。 如果我点击搜索结果页面中的链接或“10 个最佳 Foo Bars...”列表,这会非常烦人。
请将此页面视为示例。 奇怪的是,该页面在 WinXP 上的 IE6 中按预期工作,但在同一台计算机上的 FF2 上却不然。 在 Mac OS X 10.4 上,它可以在 FF2 中运行,但不能在 FF3 中运行。 我检查了是否有任何奇怪的首选项设置,但找不到任何不同的设置。
知道是什么原因造成的吗?
I've seen this weird behavior on several sites recently: I scroll down a page and follow a link to another page. When I click the Back button and return, I am left back at the top of the previous page, not at the link. This is very annoying if I'm clicking on links in a search results page or a list of "10 Best Foo Bars...".
See this page as an example. Strangely, the page works as expected in IE6 on WinXP, but not on FF2 on the same machine. On Mac OS X 10.4 it works in FF2, but not in FF3. I checked for any weird preference settings, but I can't find any that are different.
Any idea what is causing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
许多网站都有一个文本框(用于搜索网站或其他内容),该文本框被设置为在页面加载时自动获取焦点(使用 JavaScript 或其他内容)。 在许多浏览器中,页面获得焦点时会跳转到该文本框。
这真的很烦人:(
Many sites have a text box (for searching the site, or something) that is set to automatically take focus when the page loads (using javascript or something). In many browsers, the page will jump to that text box when it gets focus.
It really is very annoying :(
通常,此行为是由网站设置的浏览器缓存在到期前的时间很短或没有时间造成的。
在许多网站上,当您点击“返回”时,您会返回到您点击的链接,因为您的浏览器正在从缓存中提取页面。 如果尚未设置此缓存,则会发出新的页面请求,浏览器会将其视为新内容。
在上面链接的页面上,"Expires" header 似乎设置为比本地时钟早不到一分钟,这导致我的当我在到期时间后点击“返回”时,浏览器会获取新的副本。
Typically this behaviour is caused by the browser cache set by the site having a small or no time before expiry.
On many sites, when you hit "back" you get brought back to the link you hit, as your browser is pulling the page from your cache. If this cache has not been set, a new page request is made, and the browser treats it as fresh content.
On the page linked above, the "Expires" header seems to be set to less than a minute ahead of my local clock, which is causing my browser to get a fresh copy when I hit "back" after that expiry time.