双斜杠在URL散列片段中是ok的吗?



我正在从窗体和window.location.hash设置javascript中的片段字符串。如果用户将表单输入留空,则结果URL可以是

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

注意//

如果输入价格,它将是

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

现在可以正常工作了。这是不好的练习吗?

我认为pushState和其他History API方法都是新生的,标准还没有发展。这是W3最近的一项关于为新网络重新利用哈希符号的工作:

URI中的散列符号(#)最初用于引入静态"片段标识符",但最近它被更多地使用因为它是由JavaScript在Web中设置和解释的应用。

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

要记住的一件事是,当从window.location.hash属性读取时,转义字符将被解码。

这并不违法,只是有点草率。

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

在为电子商务做哈希url时,它们应该匹配实际的url,这样如果你列出SEO排列,它们是可索引的。它们还应该使用历史进行后退/前进。我为此写了一些代码,你可以把它收藏在AJAX或实际的URL链接上(www.kitgui.com/docs和www.klim.com/en-us/shop,还有更多,你可以通过www.emeraldcode.com看到)。

最新更新