这是我从w3schools获得的例子,我在Safari浏览器中的行为很奇怪。
http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onmousedown
Safari浏览器:
如果我们左键单击段落顶部,文本将变为红色,当我离开时,它会变为绿色。
没关系。
现在,我右键单击段落顶部。现在文本颜色变为红色,当我离开时,它永远不会变成绿色。如果我们使用右键单击,onmouseup
在Safari中不起作用。谁能告诉我为什么?
对此有何解决方案?
答案 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)">