如果执行onclick,如何禁用HREF?

我有一个与HREFONCLICK属性设置的锚点。 如果点击并启用Javascript,我希望它只执行ONCLICK并忽略HREF 。 同样,如果JavaScript被禁用或不支持,我希望它遵循HREF URL并忽略ONCLICK 。 下面是我正在做的一个例子,它将执行JS并同时跟随链接(通常JS被执行,然后页面改变):

 <A HREF="http://example.com/no-js-login" ONCLICK="yes_js_login()">Log in</A> 

最好的办法是什么?

我希望有一个Javascript的答案,但我会接受任何方法,只要它的工作,特别是如果这可以用PHP来完成。 我已经阅读过“ 在javascript onclick函数完成之前执行并redirect页面的href链接 ”,但是它只会延迟HREF ,但不会完全禁用它。 我也在寻找更简单的东西。

您可以使用第一个未编辑的解决scheme,如果您先将onclick属性返回:

 <a href="https://example.com/no-js-login" onclick="return yes_js_login();">Log in</a> yes_js_login = function() { // Your code here return false; } 

例如: https : //jsfiddle.net/FXkgV/289/

  yes_js_login = function() { // Your code here return false; } 

如果返回false,则应该阻止默认操作(转到href)。

编辑:对不起,似乎没有工作,你可以做,而不是:

 <a href="http://example.com/no-js-login" onclick="yes_js_login(); return false;">Link</a> 

只需使用preventDefault禁用默认浏览器行为,然后在HTML中传递event

<a href=/foo onclick= yes_js_login(event)>Lorem ipsum</a>

 yes_js_login = function(e) { e.preventDefault(); } 

你可以使用这个简单的代码:

 <a href="" onclick="return false;">add new action</a><br> 
 <a href="http://www.google.com" class="ignore-click">Test</a> 

与jQuery:

 <script> $(".ignore-click").click(function(){ return false; }) </script> 

与JavaScript

 <script> for (var i = 0; i < document.getElementsByClassName("ignore-click").length; i++) { document.getElementsByClassName("ignore-click")[i].addEventListener('click', function (event) { event.preventDefault(); return false; }); } </script> 

您可以将类.ignore-click分配给您喜欢的许多元素,并且单击这些元素将被忽略

如果你传递一个这样的事件参数,那就更简单了:

 <a href="#" onclick="yes_js_login(event);">link</a> 
 function yes_js_login(e) { e.stopImmediatePropagation(); } 

我解决了一个情况,我需要一个模板来处理一个普通的URL或一个javascript调用,其中js函数需要对调用元素的引用。 在JavaScript中,“this”仅在表单元素的上下文中作为自引用,例如button。 我不想要一个button,只是一个常规链接的外观。

例子:

 <a onclick="http://blahblah" href="http://blahblah" target="_blank">A regular link</a> <a onclick="javascript:myFunc($(this));return false" href="javascript:myFunc($(this));" target="_blank">javascript with self reference</a> 

href和onClick属性具有相同的值,当我的javascript调用时,我会在onClick上附加“return false”。 在被调用函数中“返回false”不起作用。

这可能有帮助。 没有JQuery需要

 <a href="../some-relative-link/file" onclick="this.href = 'https://docs.google.com/viewer?url='+this.href; this.onclick = '';" target="_blank"> 

此代码执行以下操作:将相关链接传递给Google文档查看器

  1. 通过this.href获取锚点的完整链接版本
  2. 打开新窗口的链接。

所以在你的情况下,这可能工作:

 <a href="../some-relative-link/file" onclick="this.href = 'javascript:'+console.log('something has stopped the link'); " target="_blank"> 

这对我工作:

 <a href="" onclick="return false;">Action</a> 

在我的情况下,我有一个条件,当用户点击“a”元素。 条件是:

如果其他部分有十多个项目,则用户不应该被redirect到其他页面。

如果其他部分的项目less于10个,则应将用户redirect到其他页面。

“a”元素的function取决于其他组件。 点击事件中的代码如下:

 var elementsOtherSection = document.querySelectorAll("#vehicle-item").length; if (elementsOtherSection> 10){ return true; }else{ event.preventDefault(); return false; }