2012-02-15 98 views
-1

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

+0

你自己写了ajax函数吗?或从图书馆?请更具体地说 – paislee 2012-02-15 19:22:11

+0

您是否使用JS框架?除非我们知道您正在使用哪些功能,否则我们无法确定。 – 2012-02-15 19:23:42

+0

提示:[... 15 /登录网址#页脚](http://stackoverflow.com/questions/9299815/sign-on-url#footer):P – Andrew 2012-02-15 19:23:56

回答

2
  1. 对URL的#标志被称为哈希标志和趋向于URL从页面上的锚分开,这样你就可以浏览到页面的部分,而不仅仅是顶端的页面。

  2. 在AJAX世界,这也可以用来保持当前页面,你可以很容易地知道你来自哪里,(如页面加载异步)来到,所以你可以很容易地回去不使用history API(使用这种技术的jQueryMobile alpha版)

  3. http://domain.com/page2.htm#page1.htm一个网址,你可以很容易知道你使用document.location.hash

  4. 来到这里,但通常是简单的具有与该h的锚标记灰href<a href="#">click here</a>女巫normaly是一个简单的技巧,让anchor标签知道行为像一个链接,但无处可去......如果你不希望它被写入你的网址,你只需要返回false所以锚链接不跳转到#(女巫是当前页)。

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

+1

+1关于#4的注释:在jQuery中,返回false将防止事件冒泡。要继续冒泡但不导航到href属性中的URL,可以使用[event.preventDefault()](http://api.jquery.com/event.preventDefault/)。 [这个问题](http://stackoverflow.com/questions/1357118/javascript-event-preventdefault-vs-return-false)是一个很好的参考。 – grossvogel 2012-02-15 19:45:30

+1

@grossvogel我不想说任何关于JavaScript框架的东西,因为大量使用** mootols **或任何非jQuery **,你所说的只是适用于jQuery。每个框架都会自己实现返回false ... – balexandre 2012-02-15 21:09:03

2

这很可能不是JavaScript加入#,而是你点击的链接来触发JavaScript。

很多人会做这样的事情:

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

这样的文字会出现像一个链接,但点击链接后会不会把用户离开该页面并且将执行一些JavaScript。这样做的副作用是将#附加到URL上,并且用户滚动到屏幕的顶部。

1

该URL上的散列符号(#)之后的内容称为碎片。

它最初是为HTML文档中的本地锚定(并且仍然使用)。

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

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

此外,对于<a />链接将被识别为:link(以CSS表示法),它必须具有非空href属性。通常使用href="#",因为最后有和没有它的URI是等价的。 (无论是在#之后,包括散列本身都不作为页面请求的一部分发送到服务器)。

1

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

例如:"#" sign on URL

此外,#后什么也不会通过GET参数传递给服务器。