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

函数myJsFunc(){警报(“myJsFunc”);}<a href=“#”onclick=“myJsFunc();”>运行JavaScript代码</a>

or

函数myJsFunc(){警报(“myJsFunc”);}运行javascript代码</a>


当前回答

这里实际上有四种选择。

使用return false;允许您保留锚版本,以防在禁用JavaScript的浏览器中出现安全的“回退”,或者用户代理不支持(现在用户的1-5%)。如果脚本失败,可以使用锚定符“#”、空字符串或href的特殊URL。请注意,您必须使用href,以便屏幕读者知道它是一个超链接。(注意:我不会讨论删除href属性的问题,因为这一点在这里没有意义。锚上没有href意味着锚不再是一个超链接,而只是一个html标记,上面有一个被捕获的点击事件。)

<a href="" onclick="alert('hello world!');return false;">My Link</a>
<a href="#" onclick="alert('hello world!');return false;">My Link</a>
<a href="MyFallbackURL.html" onclick="alert('hello world!');return false;">My Link</a>

下面是目前在href属性中使用javascript:void(0)的更流行的设计。如果浏览器不支持脚本,则应再次将其发布回页面,因为href超链接路径返回了一个空字符串。如果您不关心谁支持JavaScript,请使用此选项。

<a href="javascript:void(0);" onclick="alert('hello world!');">My Link</a>

其他回答

我个人将它们结合使用。例如:

HTML

<a href="#">Link</a>

使用一点jQuery

$('a[href="#"]').attr('href','javascript:void(0);');

or

$('a[href="#"]').click(function(e) {
   e.preventDefault();
});

但我使用它只是为了防止用户单击空锚点时页面跳到顶部。我很少在HTML中直接使用onClick和其他on事件。

我的建议是将<span>元素与class属性一起使用,而不是锚。例如:

<span class="link">Link</span>

然后将函数分配给.link,其中包含一个封装在body中的脚本,该脚本位于</body>标记之前或外部JavaScript文档中。

<script>
    (function($) {
        $('.link').click(function() {
            // do something
        });
    })(jQuery);
</script>

*注意:对于动态创建的元素,请使用:

$('.link').on('click', function() {
    // do something
});

对于使用动态创建元素创建的动态创建元素,请使用:

$(document).on('click','.link', function() {
    // do something
});

然后,您可以将span元素设置为看起来像带有一点CSS的锚点:

.link {
    color: #0000ee;
    text-decoration: underline;
    cursor: pointer;
}
.link:active {
    color: red;
}

下面是上面提到的jsFiddle示例。

只使用#会做出一些有趣的动作,所以如果你想节省JavaScript bla、bla、的输入工作量,我建议使用#self,。

我用开发工具在谷歌chrome中尝试了这两种方法,结果id=“#”花了0.32秒。而javascript:void(0)方法只花了0.18秒。因此,在googlechrome中,javascript:void(0)工作得更好更快。

我从你的话中了解到,你想要创建一个链接来运行JavaScript代码。

然后你应该考虑到有人在浏览器中阻止JavaScript。

因此,如果你真的要将该链接仅用于运行JavaScript函数,那么你应该动态添加它,这样即使用户没有在浏览器中启用JavaScript,也不会看到它,而你使用该链接只是为了触发一个JavaScript函数,在浏览器中禁用JavaScript时,使用这样的链接是没有意义的。

由于这个原因,当JavaScript被禁用时,它们都不好。

a如果启用了JavaScript,并且您只想使用该链接调用JavaScript函数,则

<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>

比使用

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

因为href=“#”将导致页面执行不需要的操作。

此外,<a href=“javascript:void(0)”onclick=“myJsFunc();”>Link</a>优于<a href=”#“onclick=“myJsFunc(;)”>Link//a>的另一个原因是javascript被用作大多数浏览器的默认脚本语言。例如,InternetExplorer使用onclick属性来定义要使用的脚本语言类型。除非出现另一种好的脚本语言,否则Internet Explorer也会使用JavaScript作为默认语言,但如果另一种脚本语言使用JavaScript:,则会让Internet Explorer了解正在使用的脚本语言。

考虑到这一点,我更喜欢使用和锻炼

<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>

为了让它成为一种习惯,为了更方便用户,请在JavaScript代码中添加此类链接:

$(document).ready(function(){
    $(".blabla").append('<a href="javascript:void(0)" onclick="myJsFunc();">Link</a>')
});

通常,您应该始终有一个回退链接,以确保禁用JavaScript的客户端仍然具有某些功能。这个概念被称为不引人注目的JavaScript。

实例假设您有以下搜索链接:

<a href="search.php" id="searchLink">Search</a>

您始终可以执行以下操作:

var link = document.getElementById('searchLink');

link.onclick = function() {
    try {
        // Do Stuff Here        
    } finally {
        return false;
    }
};

这样,禁用JavaScript的用户将被引导到search.php,而使用JavaScript的用户则可以查看增强的功能。