我有以下标记:
<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>
我无法使用e.preventDefault()
和e.stopPropagation()
同时使用return false
。是否有可能取消此活动?
由于
答案 0 :(得分:2)
假设您打算停止点击锚元素导航到指定的网址,那么您需要使用“onclick”事件,而不是“onmousedown”。
对于旧式element.onsomeevent =
处理程序,只有非IE浏览器将事件对象作为参数传递给函数,而IE具有window.event
属性 - 因此您也需要允许这样做。
而且,当阻止与事件关联的默认操作时,IE会以不同的方式执行操作:对于IE,将事件的returnValue
属性设置为false,对于非IE调用e.preventDefault()
(注意“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()
错误,但是你不需要这个方法 - 它会阻止事件冒泡到父元素,它不会取消默认操作。)