【问题标题】:Firefox and window.location.hashFirefox 和 window.location.hash
【发布时间】:2011-03-16 22:10:23
【问题描述】:

我目前正在 Firefox 3.6.15 中测试一个 AJAX 应用程序,当我需要不重新加载页面时,它使用 window.location.hash 更改进行导航。

我有一个这样做的链接:

var editCategoryClick = (function (categoryID) {
                return function () {
                    if (window.location.hash != window.location.hash + '/' + categoryID) {
                        window.location.hash = window.location.hash + '/' + categoryID;
                    }
                }
            })(category.ID);

这很好用。我最终得到了这个结果。 '#numbers/categories' 变为 '#numbers/categories/eba38179-d492-4bb9-ba66-1bfa4c3571fb'

但是,如果我手动进入浏览器导航栏并将 '#numbers/categories' 更改为 #numbers/categoriesX',则在我运行 click 函数时哈希不会更新。

我在测试 chrome、safari、ie9、ie8 的任何其他浏览器中都没有这个问题。只有 Firefox 表现出这种行为。我知道这是一个罕见的案例,但它仍然是用户体验问题。

提前感谢您的帮助。

【问题讨论】:

  • window.location.hash != window.location.hash + '/' + categoryID 总是返回 true 我猜 - 这就像检查一些 xx + 1 的不相等性。

标签: javascript ajax firefox hash


【解决方案1】:
  1. 附加一个onhashchange 事件监听器来探测散列变化。对于不支持的浏览器,请使用setInterval 检测更改。
  2. 如果可以使用 jQuery History 之类的东西,为什么还要重新发明轮子?

【讨论】:

  • 你知道Dojo中是否有类似的东西吗?
猜你喜欢
  • 2011-11-12
  • 2019-07-17
  • 2023-03-10
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多