当前位置:  开发笔记 > 前端 > 正文

URL锚点中有两个分隔符可以使用?

如何解决《URL锚点中有两个分隔符可以使用?》经验,为你挑选了1个好方法。

我在我的URL中使用锚点,允许人们在Web应用程序中为"活动页面"添加书签.我使用锚点因为它们很容易适应GWT历史机制.

我现有的实现将导航和数据信息编码到锚中,用" - "字符分隔.即创建#location-location-key-value-key-value等锚点

除了一个事实,即负值(如-1)造成严重的解析问题,它的工作原理,但现在我发现有两个分隔符会更好.另外,给出负数问题,我想放弃使用' - '.

哪些其他字符在URL锚点中起作用,不会干扰URL或其GET参数?这些将来会有多稳定?



1> Daniel LeChe..:

查看RFC的URL,第3.5节将片段标识符(我相信你指的是)定义为

fragment    = *( pchar / "/" / "?" )

并附录A

pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
                 / "*" / "+" / "," / ";" / "="

有趣的是,规范也说明了这一点

"字符斜杠("/")和问号("?")允许表示片段标识符中的数据."

所以看来真正的锚点就像


....

应该是合法的,并且非常像普通的URL查询字符串.(快速检查验证这些在至少chrome,firefox和ie中可以正常工作)因为这有效,我假设你可以使用你的方法来获取像

http://www.site.com/foo.html?real=1meters=2# fake = 2¶meters = 3

没问题(例如片段中的'parameters'变量不应该干扰查询字符串中的那个)

您还可以在必要时使用百分比编码...并且子delim中定义的许多其他字符可以使用.

注意:

另外从规范:

"片段标识符组件由数字符号("#")字符的存在表示,并以URI的末尾结束."

所以#之后的所有内容都是片段标识符,不应该干扰GET参数.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有