我在我的URL中使用锚点,允许人们在Web应用程序中为"活动页面"添加书签.我使用锚点因为它们很容易适应GWT历史机制.
我现有的实现将导航和数据信息编码到锚中,用" - "字符分隔.即创建#location-location-key-value-key-value等锚点
除了一个事实,即负值(如-1)造成严重的解析问题,它的工作原理,但现在我发现有两个分隔符会更好.另外,给出负数问题,我想放弃使用' - '.
哪些其他字符在URL锚点中起作用,不会干扰URL或其GET参数?这些将来会有多稳定?
查看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参数.