“#”在URL上签名

时间:2012-02-15 19:20:36

标签: javascript html ajax

我正在使用JavaScript和AJAX。其中一个AJAX函数在URL的末尾添加“#”符号。该函数有效,但我想知道为什么只有这个函数添加该符号而不是其他函数。 “#”标志能给未来带来一些问题吗?

4 个答案:

答案 0 :(得分:2)

很可能不是javascript添加了#,而是你点击的链接来触发javascript。

很多人都会这样做:

<a href="#" onclick="something()">text</a>

这样文本就会显示为链接,但点击链接不会让用户离开页面并执行一些javascript。这样做的副作用是将#附加到URL,并将用户滚动到屏幕顶部。

答案 1 :(得分:2)

  1. 网址上的#符号称为哈希符号,并且倾向于将网址与页面上的锚点分开,以便您可以导航到部分页面,而不仅仅是页面顶部。

  2. 在AJAX世界中,这也可以用来保存当前页面,您可以轻松地知道它来自哪里(因为页面被加载为异步)所以您可以轻松返回不使用history api(使用此技术的jQueryMobile的alpha版本)

  3. http://domain.com/page2.htm#page1.htm这样的网址中,您可以轻松了解使用document.location.hash来自哪里

  4. 但通常很简单,有一个锚标记,其哈希值为href,如<a href="#">click here</a>,女巫正常是让anchor成为一个简单的技巧标签知道表现得像一个链接,但无处可去......如果你不想在你的URL中写,你只需要返回false所以锚链接不会跳转到{{1} (女巫是当前页面)。

  5. 顺便说一下,这不会以任何方式搞乱您的代码或任何未来的代码,这只是不好的做法。

答案 2 :(得分:1)

URL上的哈希符号(#)之后的内容称为片段。

最初打算(并且仍然使用)HTML文档中的本地锚点。

但是,AJAX应用程序通常也使用它来维护历史状态,以便能够在浏览器中使用后退按钮。

例如,jQuery BBQ plugin允许您读取/设置参数(类似于查询参数,URL中?之后的参数)并监视这些参数的变化,以便触发其他操作无需重新加载整页。

此外,要将<a />链接识别为:link(在CSS标记中),它必须具有非空href属性。通常,使用href="#"是因为末尾有和没有它的URI是等价的。 (无论在#之后是什么,包括哈希本身都不会作为页面请求的一部分发送到服务器。)

答案 3 :(得分:1)

#用于指定浏览器将视图置于页面中特定命名元素的中心。

例如:"#" sign on URL

此外,#之后的任何内容都不会通过GET参数传递给服务器。