Safari多个标签

时间:2010-12-13 20:21:14

标签: jquery url safari

我最近在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

有人可以解释为什么会发生这种情况。

4 个答案:

答案 0 :(得分:3)

哈希(#)是URL中的保留字符。散列后面的任何字符都是URL的片段部分。所以Safari正在将额外的非法哈希值转移到%23。

http://labs.apache.org/webarch/uri/rfc/rfc3986.html

答案 1 :(得分:2)

fragment component

实际上不允许使用普通#
fragment    = *( pchar / "/" / "?" )

pchar 等同于此扩展:

pchar       = ALPHA / DIGIT / "-" / "." / "_" / "~" / "%" HEXDIG HEXDIG / "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" / ":" / "@"

那里没有#。所以Safari的行为将是预期的行为。

但也许其他浏览器只是将%23显示为#以提高可读性。

答案 2 :(得分:0)

%23是#符号被转义的方式。显然,Safari感觉就像这样,其他浏览器则没有。它似乎在任何情况下加载相同的页面。

以下是转义码列表: http://www.december.com/html/spec/esccodes.html

答案 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