Javascript onmouseup不在safari工作

Javascript onmouseup不在safari工作,javascript,safari,onmouseup,onmouseclick,Javascript,Safari,Onmouseup,Onmouseclick,这是我从w3schools得到的一个例子,在那里,我仅仅在safari浏览器上就有奇怪的行为 Safari: 如果我们左键单击段落顶部,文本将变为红色,当我离开时,文本将变为绿色。 那很好。 现在,我右键点击段落顶部。现在文本颜色变成红色,当我离开它时,它永远不会变成绿色。i、 如果我们使用右键单击,eonmouseup在safari中不起作用。谁能告诉我为什么? 有什么解决方案吗?在safari中,右键单击时,上下文菜单的焦点似乎被赋予了上下文菜单,因此上下文菜单接收的是mouseup事件,

这是我从w3schools得到的一个例子,在那里,我仅仅在safari浏览器上就有奇怪的行为

Safari: 如果我们左键单击段落顶部,文本将变为红色,当我离开时,文本将变为绿色。 那很好。 现在,我右键点击段落顶部。现在文本颜色变成红色,当我离开它时,它永远不会变成绿色。i、 如果我们使用右键单击,e
onmouseup
在safari中不起作用。谁能告诉我为什么?
有什么解决方案吗?

在safari中,右键单击时,上下文菜单的焦点似乎被赋予了上下文菜单,因此上下文菜单接收的是mouseup事件,而不是p元素。至于解决方案,您可以检测鼠标按钮,以防止其在右键单击时出现行为。右键单击事件是 凌乱,除非您想要处理自定义上下文菜单

如果希望鼠标右键单击触发时,mouseup事件在safari中工作,则需要通过将此属性添加到p元素来禁用关联菜单:

oncontextmenu="return false">
还可以检测左键单击是否触发事件(通常是要处理的按钮):

在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)">


哦,不,对不起。你误会我了。我不想在右键单击时禁用onmouseup和onmousedown。我想为safari浏览器触发onmouseup。实际上,我使用的是上下文菜单。所以用户直接右键点击文本框的顶部。所以我想在用户右键单击文本框时触发onmouseup。虽然我使用了onfocus,但它并没有返回我需要的确切值。我认为您将很难与safari的默认行为以及其他一些浏览器抗争,因为如果元素没有接收到事件(即:当上下文菜单获得焦点时),它就无法处理。您可能需要牺牲上下文菜单或右键单击交互。我几乎要哭了。计划使用onmousedown在我看来,用户习惯于只在需要访问上下文菜单时单击鼠标右键,因此如果它不与ui交互,就没有什么大不了的。我没有想到一种情况下,默认上下文菜单和自定义交互都是真正需要的。不过这是我的意见。
<p onmousedown="myFunction(this,'red',event)" onmouseup="myFunction(this,'green',event)">