我有一个HREF
和ONCLICK
属性集的锚点。如果单击并启用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完成。我已经读过“a href link executes and redirects page before javascript onclick function is able to finish”了,但它只延迟HREF
,但并没有完全禁用它。我也在寻找更简单的东西。
如果先在onclick
属性中放置return,则可以使用第一个未编辑的解决方案:
<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;
}
就我而言,当用户单击“a”元素时,我遇到了一个条件。条件是:
如果其他部分的项目超过十个,则不应将用户重定向到其他页面。
如果其他部分的项目少于10个,则应将用户重定向到其他页面。
“a”元素的功能取决于其他组件。点击事件中的代码如下:
var elementsOtherSection = document.querySelectorAll("#vehicle-item").length;
if (elementsOtherSection> 10){
return true;
}else{
event.preventDefault();
return false;
}
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="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="return false;">add new action</a><br>
如果你传递一个这样的事件参数,它会更简单:
<a href="#" onclick="yes_js_login(event);">link</a>
function yes_js_login(e) {
e.stopImmediatePropagation();
}
我解决了一种情况,我需要一个模板来处理常规URL或javascript调用的元素,其中js函数需要对调用元素的引用。在javascript中,“this”仅在表单元素(例如按钮)的上下文中用作自引用。我不想要一个按钮,只是常规链接的外观。
例子:
<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 Docs Viewer
this.href
获取锚点的完整链接版本所以在你的情况下这可能会起作用:
<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>