【问题标题】:Are double forward slashes ok in URL hash fragmentURL 哈希片段中的双正斜杠是否正常
【发布时间】:2012-01-21 17:22:51
【问题描述】:

我在 javascript 中从表单构建片段字符串并使用 window.location.hash 进行设置。如果用户将表单输入留空,则生成的 URL 可以是

example.com/#search/cars//blue//mazda

注意//

如果说输入了价格,那就是

 example.com/#search/cars/20000/blue//mazda

现在这工作正常。这是不好的做法吗?

【问题讨论】:

  • 在我看来不是,而且我注意到微软甚至在某些情况下使用自动转换来制作 // 在我运行 MVC3 的某些情况下。

标签: javascript jquery html url browser


【解决方案1】:

我认为pushState 和其他历史 API 方法是如此新生,以至于标准尚未发展。在Repurposing the Hash Sign for the New Web 上打开最近的 W3 工作:

URI 中的井号 (#) 最初用于引入静态 “片段标识符”,但最近它被用于更多 复杂的方式,因为它是由 Web 中的 JavaScript 设置和解释的 应用程序。

在路径名中使用双斜杠可能会违反正常行为,但哈希片段可以是任意字符串。做一个typeof,你会发现它只是一个普通的字符串。它不是标准的,因此可能会疏远典型的用户体验。但是,就代码而言,我认为您可以随意使用双斜杠、三斜杠或其他任何内容。

要记住的一点是,escaped characters 在从 window.location.hash 属性中读取时会被解码。

【讨论】:

  • 是的,就像在 iframe 之间传递状态一样,因为您检查 iframe 跨浏览器的 URl 并通过执行间隔检查查看它何时更改,最常见的方法是使用 window.hashchange 事件来修改页面状态像 Gmail 这样的历史记录等等。
  • 是的,pushState 很棒,但还没有得到很好的支持。
【解决方案2】:

这并不违法,但有点草率。

使用 window.hashchange 事件你可以做一些很酷的事情。您只需要记住在单击时取消事件,这样它就不会进行两次刷新。您应该检测事件何时发生并相应地修改表单,例如,当用户使用后退按钮时,它会将表单修改为 URL 的状态,但您必须通过脚本或通过脚本来区分哈希何时更改用户按下后退/前进。如果您想查看,我有执行此操作的代码。

在为电子商务创建哈希 URL 时,它们也应该与实际 URL 匹配,以便在您列出 SEO 排列时它们可以索引。他们还应该使用历史来进行后退/前进。我为此编写了一些代码,您可以将其添加到 AJAX 或实际 URL 链接(www.kitgui.com/docswww.klim.com/en-us/shop 以及您可以通过www.emeraldcode.com 看到的更多内容)上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2015-08-11
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 2012-06-11
    相关资源
    最近更新 更多