Javascript 取消包装在<;中的锚元素上的鼠标向下事件(使用普通js);李>;
我有以下标记:Javascript 取消包装在<;中的锚元素上的鼠标向下事件(使用普通js);李>;,javascript,event-handling,Javascript,Event Handling,我有以下标记: <ul> <li id="aCont"> <a href="http://test.com">test</a> </li> </ul> <script type="text/javascript"> document.getElementById("aCont").onmousedown= function (e) { //some Action } <script>
<ul>
<li id="aCont">
<a href="http://test.com">test</a>
</li>
</ul>
<script type="text/javascript">
document.getElementById("aCont").onmousedown= function (e) {
//some Action
}
<script>
-
document.getElementById(“aCont”).onmousedown=函数(e){
//一些行动
}
我没有使用e.preventDefault()
和e.stopPropagation()
成功,也没有使用returnfalse
。这次活动有可能被取消吗
谢谢假设您的目的是阻止对锚元素的单击导航到指定的URL,那么您需要使用“onclick”事件,而不是“onmousedown” 对于老式的
element.onsomeevent=
处理程序,只有非IE浏览器才能将事件对象作为参数传递给函数,而IE有一个window.event
属性,因此您也需要考虑到这一点
同样,IE在阻止与事件相关联的默认操作时会做不同的事情:对于IE,将事件的returnValue
属性设置为false,对于非IE调用e.preventDefault()
(注意“provent”末尾的“t”-您在问题中拼写错误)和/或从处理程序返回false
结合所有这些:
document.getElementById("aCont").onclick = function(e) {
// allow for IE, which doesn't pass the event object as a parameter
if (!e) e = window.event;
e.returnValue = false;
if (e.preventDefault)
e.preventDefault();
return false;
}
(注意:您还将
e.stopPropagation()
拼写错误,但您不需要该方法来实现此目的-它会停止向父元素冒泡的事件,不会取消默认操作。)糟糕的是,我不允许更改事件类型。您可以复制我函数的内容,并保留onmousedown
事件,看看会发生什么。至少这样,您将处理不同浏览器取消事件的方式。我从未尝试过从onmousedown
取消超链接导航,因为肯定onclick
是正确的位置,但也许它会起作用-你只会在鼠标上下移动后得到一个点击事件,所以。。。(还有我的道歉:我刚刚注意到我把实际的单词.onclick
从我的代码中删掉了,所以我刚刚编辑了它。)P.S.我应该提到的是,即使你用鼠标向下操作它,请注意,如果用户从键盘激活它,链接仍然有效。另一方面,鼠标单击或键盘“单击”将触发单击事件。