URL哈希片段中的双正斜杠是否正常

时间:2011-12-16 04:39:19

标签: javascript jquery html url browser

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

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

请注意//

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

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

现在这很好用。这是不好的做法吗?

2 个答案:

答案 0 :(得分:0)

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

  

URI中的哈希符号(#)最初用于引入静态   "片段标识符",但最近它被用于更多   由Web中的JavaScript设置和解释的复杂方式   应用

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

要记住的一件事是,escaped characterswindow.location.hash属性读取时会被解码。

答案 1 :(得分:0)

它不是非法的,但它有点草率。

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

在为电子商务执行哈希URL时,它们应该匹配实际的URL,因此如果您列出了SEO的排列,它们是可索引的。他们还应该使用历史记录进行后退/前进。我为此编写了一些代码,您可以在AJAX或实际URL链接(www.kitgui.com/docswww.klim.com/en-us/shop上添加书签,还可以通过www.emeraldcode.com查看更多内容。