我最近在Safari上测试了我的网站,由于一些奇怪的原因,它只读取网址中的第一个#标签
http://www.mangamanga.com/mangaReader.php#mangaNo=3%23chapterNo=8%23pageNo=1
而在所有其他浏览器中它看起来像这样
http://www.mangamanga.com/mangaReader.php#mangaNo=3#chapterNo=8#pageNo=1
有人可以解释为什么会发生这种情况。
答案 0 :(得分:3)
哈希(#)是URL中的保留字符。散列后面的任何字符都是URL的片段部分。所以Safari正在将额外的非法哈希值转移到%23。
答案 1 :(得分:2)
#
fragment = *( pchar / "/" / "?" )
pchar 等同于此扩展:
pchar = ALPHA / DIGIT / "-" / "." / "_" / "~" / "%" HEXDIG HEXDIG / "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" / ":" / "@"
那里没有#
。所以Safari的行为将是预期的行为。
但也许其他浏览器只是将%23
显示为#
以提高可读性。
答案 2 :(得分:0)
%23是#符号被转义的方式。显然,Safari感觉就像这样,其他浏览器则没有。它似乎在任何情况下加载相同的页面。
答案 3 :(得分:0)
大多数人一直说的是真的; Safari确实将其视为非法字符(第二个哈希),但其他现代浏览器(IE / Chrome)也可以。
Gumbo表示其他浏览器只是将第二个哈希显示为#,但它确实是%23。据我所知,这是不正确的,因为使用document.location.hash.split('#')
将为您提供以下数组:
[0] - http://www.mangamanga.com/mangaReader.php#mangaNo=3
[1] - chapterNo=8
[2] - pageNo=1