【问题标题】:Change URL that is displayed in non-HTML5 browsers (without reloading the page)更改在非 HTML5 浏览器中显示的 URL(无需重新加载页面)
【发布时间】:2011-12-15 14:27:28
【问题描述】:

我想知道是否有办法更改在不支持 HTML5 的浏览器中显示的 URL?我使用 AJAX 更新了一些页面,因此能够这样做以允许用户复制和粘贴链接会很有用。

谢谢。

【问题讨论】:

  • 我很难理解你的意思change the URL that is displayed in a browseallow users copy and paste links
  • @david 在任何页面的顶部都会显示 URL。我正在使用 AJAX 更新页面内容,但这样做不会更新显示给用户的 URL。如果名为 Geoff 的用户喜欢该内容并认为“我将复制该链接并与 Bob 分享”,那么他将复制错误的 URL,将 Bob 引导至 Geoff 查看的原始页面。

标签: javascript html url


【解决方案1】:

通常,希望在使用 AJAX 时更改站点 URL 的网站程序员会在 URL (#) 中添加一个哈希,然后是页面组件特定的 URL。

要更改哈希本身,请使用window.location.hash

但是,由于浏览器不会将 URL 的哈希部分发送到服务器,因此您需要一些代码将该部分显式发送到服务器以获取正确的内容。

有几个jQuery插件处理这个问题,例如http://plugins.jquery.com/plugin-tags/hash,这里有很多问题处理这个问题:

Getting URL hash location, and using it in jQuery

Encoding of window.location.hash

Parsing URL hash/fragment identifier with JavaScript

这些只是几个例子。

【讨论】:

  • 好的,所以基本上我对旧版浏览器所能做的就是 - mydomain.com/#page_name,当导航到它时会导致我的网站说“等等,那里有一个 # - 那就是加载内容为mydomain.com/page_name"?
  • 实际上,对于较新的浏览器也是如此。主要区别在于,在较旧的浏览器中,如果哈希值发生更改,您没有事件。因此,如果用户在您的站点中导航(例如,按下后退按钮),则不会发送新请求。
猜你喜欢
  • 2013-04-25
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 2016-01-12
  • 2012-08-23
  • 2011-06-26
  • 2011-10-27
  • 1970-01-01
相关资源
最近更新 更多