Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript href="#&引用;在页面url末尾附加#_Javascript_Html_Url_Hyperlink - Fatal编程技术网

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;