javascript - onmouseup 在 safari 中不起作用

标签 javascript safari onmouseup onmouseclick

这是我从 w3schools 获得的示例,我在其中单独使用 safari 浏览器时会出现奇怪的行为。

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

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

最佳答案

在 safari 中,似乎右键单击时焦点被赋予上下文菜单,因此上下文菜单接收 mouseup 事件而不是 P 元素。至于解决方案,您可以检测鼠标按钮以防止它在右键单击时起作用。右键单击事件是 除非您想处理自定义上下文菜单,否则很乱。

如果您希望 mouseup 事件在右键单击时在 safari 中起作用,您需要通过将此属性添加到 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)">

关于javascript - onmouseup 在 safari 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16207706/

相关文章:

Javascript 按钮单击 + 显示

javascript - 2级响应式菜单不显示 block

javascript - 设置输入值,然后禁用并移至下一个空输入

html - iOS/Mobile Safari 是否支持 HTML 图像映射中的触摸事件

android - OnMouseDown 和 OnMouseUp 只能成对使用吗?

javascript - 拖动文本可防止触发 mouseup - javascript - chrome

javascript - axios PUT 请求不起作用

javascript - Google Sign-In for Websites 文档挫折和 "gapi.auth2 has been initialized with different options."错误

html - iPad IOS html 表单选择在触摸时无法打开

Jquery 在 Safari 中提交表单