我正在使用JavaScript和AJAX。其中一个AJAX函数在URL的末尾添加“#”符号。该函数有效,但我想知道为什么只有这个函数添加该符号而不是其他函数。 “#”标志能给未来带来一些问题吗?
答案 0 :(得分:2)
很可能不是javascript添加了#
,而是你点击的链接来触发javascript。
很多人都会这样做:
<a href="#" onclick="something()">text</a>
这样文本就会显示为链接,但点击链接不会让用户离开页面并执行一些javascript。这样做的副作用是将#
附加到URL,并将用户滚动到屏幕顶部。
答案 1 :(得分:2)
网址上的#
符号称为哈希符号,并且倾向于将网址与页面上的锚点分开,以便您可以导航到部分页面,而不仅仅是页面顶部。
在AJAX世界中,这也可以用来保存当前页面,您可以轻松地知道它来自哪里(因为页面被加载为异步)所以您可以轻松返回不使用history
api(使用此技术的jQueryMobile的alpha版本)
在http://domain.com/page2.htm#page1.htm
这样的网址中,您可以轻松了解使用document.location.hash
来自哪里
但通常很简单,有一个锚标记,其哈希值为href
,如<a href="#">click here</a>
,女巫正常是让anchor
成为一个简单的技巧标签知道表现得像一个链接,但无处可去......如果你不想在你的URL中写,你只需要返回false
所以锚链接不会跳转到{{1} (女巫是当前页面)。
答案 2 :(得分:1)
URL上的哈希符号(#
)之后的内容称为片段。
最初打算(并且仍然使用)HTML文档中的本地锚点。
但是,AJAX应用程序通常也使用它来维护历史状态,以便能够在浏览器中使用后退按钮。
例如,jQuery BBQ plugin允许您读取/设置参数(类似于查询参数,URL中?
之后的参数)并监视这些参数的变化,以便触发其他操作无需重新加载整页。
此外,要将<a />
链接识别为:link
(在CSS标记中),它必须具有非空href
属性。通常,使用href="#"
是因为末尾有和没有它的URI是等价的。 (无论在#
之后是什么,包括哈希本身都不会作为页面请求的一部分发送到服务器。)
答案 3 :(得分:1)