2011-12-16 46 views
2

我从窗体构建JavaScript中的片段字符串并使用window.location.hash进行设置。如果用户离开表单输入空白生成的URL可以是双向正斜杠在URL哈希片段中确定

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

注意//

如果说价格是进入这将是

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

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

+1

在我看来不是,我注意到微软甚至在运行MVC3时甚至使用自动转换来使//在某些情况下。 – 2011-12-16 04:45:31

回答

0

我认为pushState和其他历史API方法是新生的,标准还没有发展。作为上打开Repurposing the Hash Sign for the New Web最近W3的工作:在一个URI

哈希符号(#)原本是用来引入静态 “片段标识符”,但最近它在更多的 复杂的方式为正在使用它由Web 应用程序中的JavaScript设置和解释。

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

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

+1

是的,就像在iframe之间传递状态一样,因为您检查iframe跨浏览器的URl,并通过执行间隔检查来查看它何时更改,最常用的方法是使用window.hashchange事件修改Gmail等历史记录的页状态。 – 2011-12-16 05:07:54

0

它不是非法的,但它有点马虎。

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

当为电子商务做哈希URL时,它们也应该匹配实际的网址,所以如果您列出了SEO的排列,它们也是可以索引的。他们也应该使用历史来回退/转发。我为此编写了一些代码,并且您可以将它加入AJAX或实际URL链接(www.kitgui.com/docswww.klim.com/en-us/shop以及许多更多,您可以通过www.emeraldcode.com看到)。

相关问题