【问题标题】:URL Hash odditiesURL 哈希异常
【发布时间】:2010-10-08 05:47:58
【问题描述】:

我注意到 JS 中有一些奇怪的行为

window.location.hash = '';
var hash = window.location.hash;
alert(hash + ' = ' + hash.length);
//outputs: ' = 0'
window.location.hash = '#';
hash = window.location.hash;
alert(hash + ' = ' + hash.length);
//outputs: ' = 0'
window.location.hash = '_';
hash = window.location.hash;
alert(hash + ' = ' + hash.length);
//outputs: '_ = 2'

基本上我想触发三个条件

  1. 没有哈希
  2. 只是散列
  3. 带有文本的散列

但是似乎 JS 没有看到 example.com/ 和 example.com/ 之间的区别# 我也不知道如何完全删除哈希。

有什么帮助吗?

【问题讨论】:

    标签: javascript url fragment-identifier


    【解决方案1】:
    1. 一旦设置了哈希值,就不能在不重新加载页面的情况下完全删除它(例如,删除# 符号);这是正常行为。

    2. 设置空/null 哈希和将哈希设置为默认哈希 (#) 的处理方式相同;这只是内部行为。不确定所有浏览器是否一致地处理它,但 IIRC 就是这样。

    最终,如果您想完全删除散列,则必须执行document.location.href = document.location.href 来重新加载页面(window.location.reload() 将保留散列)。

    【讨论】:

    • 所以没有hash.length = 1的情况
    • 不 - 它将包含哈希字符 (#),如果它为空或只有哈希字符(与浏览器相同),则无论如何都会报告 0。
    • @Moak 是正确的。你也无法判断window.location.hash == '#'。它对 '' 和 '#' 都返回 false。
    • @contagious:一个很好的观点。 @Moak:在这种情况下,您显然只想在进行任何其他操作/测试(等效除外)之前进行布尔测试,否则您可能会触发错误。
    猜你喜欢
    • 2019-04-08
    • 2016-08-28
    • 2012-05-28
    • 2012-01-13
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多