【问题标题】:Possible to use slash (/) instead of hash (#) without page refresh window.location?可以在没有页面刷新window.location的情况下使用斜杠(/)而不是哈希(#)吗?
【发布时间】:2011-03-07 05:51:56
【问题描述】:

我使用 'window.location.hash' 将 '#something' 添加到 URL 而不刷新页面。

我想知道如何做同样的事情,但使用斜杠 (/) 而不是井号 (#)。

为什么?我有导航选项卡,我使用 jQuery 和 Ajax 来动态加载数据。启用 javascript 后,会将“#something”添加到 URL 的末尾以获取数据。当 javascript 被禁用时,它会重定向到 '/something'。所以我想为两者伪造相同的 URL。

而不是http://site.com/section#something -> http://site.com/section/something

谢谢。

【问题讨论】:

标签: javascript jquery url


【解决方案1】:

您可以在您想要的哈希之后使用任何组合,但您的问题的答案是否,如果不重新,您将无法执行您的要求引导用户。

能够在不重定向的情况下使用 URL 在某些级别上是一个安全问题(您也可以更改域吗?为什么不呢?......看看这个兔子洞在哪里?)。例如,通过 JavaScript 将您的 URL 更改为:http://www.mybank.com(为什么我的银行不使用 SSL?坏银行,糟糕!)将是网络钓鱼者的梦想......所以浏览器不允许像这样在所有...不是没有实际带你去那里。

【讨论】:

    【解决方案2】:

    看看this article。基本上,它可以让你这样做:

    history.pushState({}, 'New Title', 'new_page.html');
    

    这会更新历史记录和地址栏,但不会真正加载页面。这就是您想要的,但它是 HTML5 的一部分,目前很少有(如果有的话)浏览器支持它。坚持使用哈希是一个更好的主意。

    【讨论】:

      【解决方案3】:

      History.pushState(参见@Casey 帖子中的链接,或Kyle Scholz' blog)存在于最新版本的 Safari 和 Firefox 中,Modernizr 1.5 现在测试浏览器对它的支持。我今天才开始玩这个,它似乎完全符合您的要求。

      我意识到这对旧浏览器没有帮助;那里仍然需要某种 window.location.hash 技巧。

      【讨论】:

        【解决方案4】:

        为什么不部署SWFAddress?

        它确实以../#/section/something 的形式为您提供 URL,并且应该是您所需要的。出于 SEO 考虑,它被广泛用于许多 Flash/AJAX 网站。

        【讨论】:

          猜你喜欢
          • 2010-11-26
          • 1970-01-01
          • 1970-01-01
          • 2021-01-20
          • 2020-10-15
          • 1970-01-01
          • 2017-05-11
          相关资源
          最近更新 更多