javascript - 单击按钮文本并释放它(但仍在按钮内)时,按钮元素未触发单击事件?

标签 javascript css webkit dom-events

在 WebKit 浏览器上(我在 Mac 上的 Chrome 和 Safari 上测试过),按钮元素表现得很奇怪:

文在这个 fiddle http://jsfiddle.net/5ReUn/3/您执行以下操作:

  1. 当光标位于 HTML 按钮文本上时按鼠标左键
  2. 将光标(按下时)移动到没有文本的按钮区域
  3. 松开鼠标键

那么按钮元素上的点击事件不会被触发!

HTML 非常简单:

<button id="button">Click</button>

而且 CSS 一点也不复杂:

button {
    display: block;
    padding: 20px;
}

点击捕捉JS:

button = document.getElementById('button');
button.addEventListener('click', function() {
    console.log('click');
});

我网站的许多访问者提示按钮不可点击。他们没有意识到他们在点击时移动了光标。

有没有人找到解决方法?

最佳答案

原来是a bug in WebKit .

一种快速的非 JavaScript 解决方案是将文本包装在 SPAN 元素中并使其点击:

<button>
    <span>Click Me</span>
</button>

示例 CSS:

span {
    display: block;
    padding: 20px;
    pointer-events: none;   // < --- Solution!
}

由于该bug只出现在WebKit中,不支持pointer-events的浏览器可以忽略。

关于javascript - 单击按钮文本并释放它(但仍在按钮内)时,按钮元素未触发单击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15679787/

相关文章:

html - 选择框文本卡在 FF 中的框顶部

javascript - 当屏幕变大时,我的导航 div 不会重新出现

python - 在没有 TCP 端口的情况下通过 Flask 调度 URL

css - 为什么我的链接无法使用 Css 转换和 Z-index?

javascript - 在 Chrome 的 Worker 中使用 `console.log` 会打印两次相同的消息

html - Flex 元素不会在 Webkit 浏览器中显示

javascript - 递归 JavaScript 函数正在丢失返回值

javascript - 汉堡导航栏激活问题?

javascript - 在 Node.js 中从 Redis 检索数据

javascript - 从另一个页面获取 ElementById