onmouseup不在野生动物园工作

时间:2013-04-25 06:17:35

标签: javascript safari onmouseup onmouseclick

这是我从w3schools获得的例子,我在Safari浏览器中的行为很奇怪。

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onmousedown

Safari浏览器: 如果我们左键单击段落顶部,文本将变为红色,当我离开时,它会变为绿色。 没关系。 现在,我右键单击段落顶部。现在文本颜色变为红色,当我离开时,它永远不会变成绿色。如果我们使用右键单击,onmouseup在Safari中不起作用。谁能告诉我为什么? 对此有何解决方案?

1 个答案:

答案 0 :(得分:3)

在safari中,右键单击时似乎关注上下文菜单,因此上下文菜单接收mouseup事件而不是P元素。至于解决方案,您可以检测鼠标按钮以防止它在右键单击时表现。右键单击事件是 除非您想要处理自定义上下文菜单,否则应该是凌乱的。

如果您希望在右键单击时触发mouseup事件,则需要通过将此属性添加到P元素来禁用上下文菜单:

oncontextmenu="return false">

还可以检测左键是否触发了事件(通常是您要处理的按钮):

function mouse_handler(event) {
    var evt=window.event||event;
    var button = evt.which || evt.button;
    if (button == 1) { // if left mouse button
        // handle the event
    }
}

在w3schools的例子中,它会导致类似这样的事情:

function myFunction(elmnt,clr,event)
{
    var evt=window.event||event;
    var button = evt.which || evt.button;
    if (button == 1) { // if left mouse button
        elmnt.style.color=clr;
    }
}

然后在函数调用中传递事件:

<p onmousedown="myFunction(this,'red',event)" onmouseup="myFunction(this,'green',event)">