Javascript href="#&引用;在页面url末尾附加#
假设我有以下链接:Javascript href="#&引用;在页面url末尾附加#,javascript,html,url,hyperlink,Javascript,Html,Url,Hyperlink,假设我有以下链接: <a href="#" onclick="alert('You clicked a link.');">Click Me!</a> 当点击此链接时,会提示一条消息,并在页面url的末尾附加一个磅符号这看起来不太好,除了在url中使用javascript之外,还有什么办法可以避免它: <a href="javascript:alert('You clicked a link.');">Click Me!</a> 技巧是在事
<a href="#" onclick="alert('You clicked a link.');">Click Me!</a>
当点击此链接时,会提示一条消息,并在页面url的末尾附加一个磅符号这看起来不太好,除了在url中使用javascript之外,还有什么办法可以避免它:
<a href="javascript:alert('You clicked a link.');">Click Me!</a>
技巧是在事件处理程序上返回false
<a href="" onclick="alert('You clicked a link.'); return false">Click Me!</a>
您必须防止出现默认响应 老式的方法是
从中返回false
:
<a href="#" onclick="alert('You clicked a link.'); return false;">Click Me!</a>
对于不使用JavaScript的用户,最好将#
替换为某个适当页面的URI。在某些司法管辖区,无障碍性实际上是一项法律要求
编辑修复了出血的问题,即:
function f() {
document.getElementById('myLink').onclick = function(e) {
alert('You clicked a link.');
if (!e) {
var e = window.event;
}
// e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = false;
// e.stopPropagation works only in Firefox.
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
};
window.onload = f;
您必须为链接提供一个非空的href,因为IE6,7无法识别它,所以#可以作为a href,只要您保持return false;在onclick中。@bisko哇。。真正地即使空字符串是有效的URI?更好的是,为href指定一个实际值,即当JavaScript被禁用或不工作时,实际返回页面的内容。@bradley yes。IE6,7完全符合标准是一个秘密:)是的,IE6,7有这个问题。我不确定8岁及以上。当您不指定a href时,a的行为只是一个正常的范围:)@Tom See和(如果第一个链接不明确,最后一个链接会给出ABNF)您能解释一下为什么这比我的方法更好吗?@bradley.ayers:(a)将流与格式分开。内联JS是邪恶的。(b) 是首选
event.preventDefault()
的原因。(c) 正如我所指出的,使用真实的URI是一项法律要求,对用户来说显然是一种帮助。“最佳方法”在IE中不起作用,因为他们使用窗口;包含了一个补丁。
<a href="#" id="myLink">Click Me!</a>
<script type="text/javascript">
window.onload = function() {
document.getElementById('myLink').onclick = function(event) {
alert('You clicked a link.');
event.preventDefault(); // <---
};
};
</script>
function f() {
document.getElementById('myLink').onclick = function(e) {
alert('You clicked a link.');
if (!e) {
var e = window.event;
}
// e.cancelBubble is supported by IE - this will kill the bubbling process.
e.cancelBubble = true;
e.returnValue = false;
// e.stopPropagation works only in Firefox.
if (e.stopPropagation) {
e.stopPropagation();
e.preventDefault();
}
};
window.onload = f;