Javascript preventDefault()未按预期工作 功能确认模式(evt) {var con=false; con=confirm('您真的要删除此购买?'); 如果(con) { 返回true; }否则 { event.preventDefault(); } }

Javascript preventDefault()未按预期工作 功能确认模式(evt) {var con=false; con=confirm('您真的要删除此购买?'); 如果(con) { 返回true; }否则 { event.preventDefault(); } },javascript,events,Javascript,Events,我的html <script> function confirmDel(evt) {var con =false; con=confirm('Do you really want to remove this purchase?.'); if(con) { return true; }else { event.preventDefault(); } } </script> 上述代码在ch

我的html

<script>
function confirmDel(evt)
{var con =false;
    con=confirm('Do you really want to remove this purchase?.');
    if(con)
    {
        return true;
    }else
    {
        event.preventDefault();
    }
}
</script>

上述代码在chrome浏览器中运行良好,但在Mozilla中失败。 但是当我使用
returnfalse
而不是
event.preventDefault()时它在这两种情况下都可以正常工作。

有人能解释为什么会发生这种情况吗

问题出在
event.preventDefault()
上。您正在传递的事件是
evt
,而不是
event
。您必须使用:

 <a title="View Log" onclick="return confirmDel(this);" href="index.php?mod=tech_support">delete</a>
event.preventDefault()
在Chrome中工作,因为它模仿旧的IE行为以实现向后兼容性(就像它还有
innerText


在旧IE中,事件对象是
window.event
。因此,调用
event.preventDefault()
调用全局事件对象,该对象在Chrome和IE中工作,但不调用Firefox,Firefox不实现这种非标准行为。

问题在于
event.preventDefault()
。您正在传递的事件是
evt
,而不是
event
。您必须使用:

 <a title="View Log" onclick="return confirmDel(this);" href="index.php?mod=tech_support">delete</a>
event.preventDefault()
在Chrome中工作,因为它模仿旧的IE行为以实现向后兼容性(就像它还有
innerText


在旧IE中,事件对象是
window.event
。因此调用
event.preventDefault()
调用全局事件对象,该对象在Chrome和IE中工作,但不调用Firefox,Firefox不实现这种非标准行为。

这是实际的代码吗?因为我看到的是
evt
,而不是
event
他说的话。这不应该在chrome中工作。@SoonDead它在chrome中工作,因为它模仿旧的IE行为(就像chrome也有
innerText
)。这是实际的代码吗?因为我看到的是
evt
,而不是
event
他说的话。这在chrome中不应该起作用。@SoonDead它在chrome中起作用是因为它模仿了旧的IE行为(就像chrome也有
innerText
)。谢谢你提供的这些信息,我认为所有浏览器都可以使用事件属性。@ArunKillu不,它是旧的IE行为,不遵循任何标准。为了IE兼容性,在Chrome中模拟了此行为,但并非所有浏览器都基于此原因实现IE行为。谢谢您提供的信息,我认为所有浏览器都可以使用事件属性。@ArunKillu不,这是一种旧的IE行为,不遵循任何标准。为了与IE兼容,Chrome模拟了这种行为,但并非所有浏览器都基于这种原因实现IE行为。