Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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
其中";href";“我应该为JavaScript链接使用的值”#&引用;或;javascript:void(0)“;?_Javascript_Html_Performance_Optimization_Href - Fatal编程技术网

其中";href";“我应该为JavaScript链接使用的值”#&引用;或;javascript:void(0)“;?

其中";href";“我应该为JavaScript链接使用的值”#&引用;或;javascript:void(0)“;?,javascript,html,performance,optimization,href,Javascript,Html,Performance,Optimization,Href,以下是构建链接的两种方法,链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好 函数myJsFunc(){ 警报(“myJsFunc”); } “#”将用户带回到页面顶部,因此我通常使用void(0) javascript:的行为也类似于javascript:void(0)第一个,最好有一个真正的链接,以防用户禁用JavaScript。只要确保返回false,以防止在JavaScript执行时触发click事件 <a href="#" onclic

以下是构建链接的两种方法,链接的唯一目的是运行JavaScript代码。在功能、页面加载速度、验证目的等方面,哪个更好

函数myJsFunc(){
警报(“myJsFunc”);
}
“#”
将用户带回到页面顶部,因此我通常使用
void(0)


javascript:
的行为也类似于
javascript:void(0)

第一个,最好有一个真正的链接,以防用户禁用JavaScript。只要确保返回false,以防止在JavaScript执行时触发click事件

<a href="#" onclick="myJsFunc(); return false;">Link</a>

如果使用Angular2,则此方法有效:


除非您使用JavaScript编写链接(这样您就知道它在浏览器中已启用),否则理想情况下,您应该为禁用JavaScript浏览的用户提供适当的链接,然后在onclick事件处理程序中阻止链接的默认操作。这样,那些启用JavaScript的人将运行该函数,而那些禁用JavaScript的人将跳转到适当的页面(或同一页面中的位置),而不仅仅是单击链接而什么也没有发生。

如果你有一个实际的URL,可以使用它作为HREF。如果有人在你的链接上点击鼠标中键打开一个新标签,或者如果他们禁用了JavaScript,onclick将不会触发

如果这是不可能的,那么您至少应该使用JavaScript和适当的click事件处理程序将锚定标记注入到文档中

我意识到这并不总是可能的,但在我看来,在开发任何公共网站时都应该努力做到这一点

查看和(都是维基百科)。

理想情况下,您可以这样做:

<a href="javascriptlessDestination.html" onclick="myJSFunc(); return false;">Link text</a>


或者,更好的方法是,在HTML中有默认的操作链接,并且在DOM呈现后通过JavaScript将onclick事件悄悄地添加到元素中,从而确保如果JavaScript不存在/未使用,则不会有无用的事件处理程序混淆代码和潜在的混淆(或至少分散注意力)您的实际内容。

禁用JavaScript的用户可以访问您的站点,这很好,在这种情况下,href指向一个页面,该页面执行与正在执行的JavaScript相同的操作。否则,我会使用带有“
返回false;”
”的“#”来阻止其他人提到的默认操作(滚动到页面顶部)

谷歌搜索“
javascript:void(0)
”提供了有关此主题的大量信息。如果你问我的话,他们中的一些人会提到不使用void(0)的原因

如果你的“链接”的唯一目的是运行一些JavaScript代码,那么它不符合链接的条件;而是一段带有JavaScript函数的文本。我建议使用一个带有
onclick处理程序的
标记和一些基本CSS来导入链接。链接用于导航,如果您的JavaScript代码不用于导航,那么它不应该是
标记

例如:

function callFunction(){console.log(“调用的函数”);}
.jsAction{
光标:指针;
颜色:#00f;
文字装饰:下划线;
}

我想在这里调用JavaScript函数。

根据您想要完成的任务,您可以忽略onclick,只需使用href:

<a href="javascript:myJsFunc()">Link Text</a>

最后,如果您不想让任何人去任何地方,也不想调用javascript函数,则可以使用
javascript:void(0)
。如果你有一张你想让鼠标悬停事件发生的图片,它会非常有用,但是用户没有任何东西可以点击。

我相信你提出的是一个错误的二分法。这不是唯一的两个选择


我同意D4V360先生的意见,他建议,即使您使用锚定标签,您在这里也没有真正的锚定。您所拥有的只是文档中的一个特殊部分,其行为应该略有不同。
标记更合适。

我使用
javascript:void(0)

原因有三。鼓励开发团队使用
#
不可避免地会导致一些人使用如下函数的返回值:

function doSomething() {
    //Some code
    return false;
}
onclick="someFunc.call(this)"
但是他们忘记了在onclick中使用
returndosomething()
,只使用
doSomething()

避免
#
的第二个原因是最后的
返回false。因此,开发人员还必须记住适当地处理被调用函数中的任何错误

第三个原因是,在某些情况下,
onclick
事件属性是动态分配的。我更喜欢能够调用函数或动态分配函数,而不必专门为一种或另一种附件方法编写函数代码。因此,我的HTML标记中的
onclick
(或任何内容)如下所示:

function doSomething() {
    //Some code
    return false;
}
onclick="someFunc.call(this)"

使用
javascript:void(0)
可以避免上述所有问题,而且我还没有发现任何负面影响的例子

因此,如果您是一名独立的开发人员,那么您显然可以做出自己的选择,但如果您是一个团队,您必须声明:

使用
href=“#”
,确保
onclick
始终包含
返回false
最后,任何被调用的函数都不会抛出错误,如果将函数动态附加到
onclick
属性,请确保它在不抛出错误的同时返回
false

使用
href=“javascript:void(0)”


第二种方法显然更容易沟通。

我同意其他地方的建议,即你应该定期使用U
function doSomething() {
    alert( 'you clicked on the link' );
    return true;
}
<a href="path/to/some/url" onclick="return !doSomething();">link text</a>
<a href="search.php" id="searchLink">Search</a>
var link = document.getElementById('searchLink');

link.onclick = function() {
    try {
        // Do Stuff Here        
    } finally {
        return false;
    }
};
$(document).ready(function() {
    $("a").css("cursor", "pointer");
});
<a onclick="hello()">Hello</a>
<a href="javascript:;" onclick="myJsFunc();">Link</a>
<a href="javascript:void(0);" onclick="myJsFunc();">Link</a>
<a href="/gracefully/degrading/url/with/same/functionality.ext" class="some-selector">For great justice</a>
$(function() {
    $(".some-selector").click(myJsFunc);
});
<p><a href="Home/ChangePicture" onclick="return ChangePicture_onClick();" title="Change Picture">Change Picture</a></p>

<script type="text/javascript">
    function ChangePicture_onClick() {
        $.get('Home/ChangePicture',
              function (htmlResult) {
                  $("#ModalViewDiv").remove(); //Prevent duplicate dialogs
                  $("#modalContainer").append(htmlResult);
                  $("#ModalViewDiv").dialog({
                      width: 400,
                      modal: true,
                      buttons: {
                          "Upload": function () {
                              if(!ValidateUpload()) return false;
                              $("#ModalViewDiv").find("form").submit();
                          },
                          Cancel: function () { $(this).dialog("close"); }
                      },
                      close: function () { }
                  });
              }
        );
        return false;
    }
</script>
<a href="#" onclick="myJsFunc();return false;">Link</a>
$(function(){
   $('.no-link').click(function(e){
       e.preventDefault();
   });
});
<a href="/" class="no-link">Faux-Link</a>
<a href="javascript:void(0)" class="no-link">Faux-Link</a>
<a href="">Do some fancy JavaScript</a>
<a href="#" onclick="myJsFunc(); return false;">Run JavaScript Code</a>
<a href="javascript://" onclick="myJsFunc();">Run JavaScript Code</a>
<a href="javascript:void(0)" onclick="myJsFunc();">Run JavaScript Code</a>
<a href="#">Link</a>
$('a[href="#"]').attr('href','javascript:void(0);');
$('a[href="#"]').click(function(e) {
   e.preventDefault();
});
<span class="link">Link</span>
<script>
    (function($) {
        $('.link').click(function() {
            // do something
        });
    })(jQuery);
</script>
$('.link').on('click', function() {
    // do something
});
$(document).on('click','.link', function() {
    // do something
});
.link {
    color: #0000ee;
    text-decoration: underline;
    cursor: pointer;
}
.link:active {
    color: red;
}
<a href="javascript:;" onclick="yourFunction()">Link description</a>
<span onclick="myJsFunc()" class="funcActuator">myJsFunc</span>
.funcActuator { 
  cursor: default;
}

.funcActuator:hover { 
  color: #900;
}