【问题标题】:Force reload when url hash changes当 url 哈希更改时强制重新加载
【发布时间】:2015-01-19 06:25:23
【问题描述】:

在我的应用程序中有一个标题菜单。我们有 5 个菜单项,它们具有相同的页面 url 和不同的哈希值,例如

  1. 首页 (www.sample.com)
  2. 品牌页面 1(www.sample.com/test.html#brand1)
  3. 品牌页面 2(www.sample.com/test.html#brand2)
  4. 品牌页面 3(www.sample.com/test.html#brand3)
  5. 品牌页面 4(www.sample.com/test.html#brand4)

所有品牌页面都将导航到同一页面 (test.html),但具有不同的哈希值。

问题:当我从HOME单击品牌页面的任何链接时,页面会自动导航到test.html并检查哈希标签并通过ajax自动加载项目。

但是当我点击品牌页面内的任何品牌页面链接时,页面没有刷新。

【问题讨论】:

  • onhashchange=location.reload.bind(location);
  • 谢谢@dandavis 但这在 IE 中不起作用
  • 它可以在 IE8+ 中工作,可能需要使用 anon 而不是为 ie8 绑定。也就是说,这似乎是一个非常糟糕的主意,并且破坏了单页网站重新加载每个导航的意义......
  • 您是否有特殊需要尝试改变哈希的自然行为?也许使用 url 参数而不是 www.sample.com/test.html?brand1 甚至像 www.sample.com/test.html?p=0#brand1 这样的东西。这样你就不用担心浏览器的兼容性了……

标签: javascript jquery html url hash


【解决方案1】:

HTML:

<div id="menu">
    <a href="#1">brand 1</a>
    <a href="#2">brand 2</a>
</div>

JQ:

$(function() {

    $('#menu a').click(function(e){
        var url=$(this).attr('href');

        window.location.href=url;// ## change url with hash
        location.reload();       // ## reload page

        e.preventDefault();      // ## prevent default click action 
    })

}) 

【讨论】:

    猜你喜欢
    • 2021-06-27
    • 1970-01-01
    • 2010-12-08
    • 2014-07-06
    • 2012-07-28
    • 1970-01-01
    • 2010-12-28
    • 2014-09-23
    • 1970-01-01
    相关资源
    最近更新 更多