href ="#"在页面末尾添加#

Web*_*ner 4 html javascript url hyperlink

假设我有以下链接:

<a href="#" onclick="alert('You clicked a link.');">Click Me!</a>
Run Code Online (Sandbox Code Playgroud)

单击此链接时,将提醒消息以及在页面末尾添加井号.
除了在url本身使用javascript之外,有什么方法可以避免它,这看起来不是很漂亮:

<a href="javascript:alert('You clicked a link.');">Click Me!</a>
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 6

您必须阻止发生默认响应.

老式的方法是return false从它:

<a href="#" onclick="alert('You clicked a link.'); return false;">Click Me!</a>
Run Code Online (Sandbox Code Playgroud)

或更好:

<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.');
      return false;
   };
};
</script>
Run Code Online (Sandbox Code Playgroud)

现在最好的方法是调用event属性的正确方法:

<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>
Run Code Online (Sandbox Code Playgroud)

#对于不使用JavaScript的人来说,最好将URI 替换为适当页面的URI.在某些司法管辖区,可访问性实际上是法律要求.

编辑固定为bleedin'IE:

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;
Run Code Online (Sandbox Code Playgroud)

  • @ bradley.ayers:(a)将格式分开.内联JS是邪恶的.(b)http://stackoverflow.com/questions/1357118/javascript-event-preventdefault-vs-return-false/1357146#1357146是首选`event.preventDefault()`的原因.(c)正如我所指出的,使用真正的URI是法律要求,对用户来说是一个明显的帮助. (2认同)