html - 处理按钮双击的默认行为

标签 html css google-chrome safari dom-events

我已经添加了一个 mouseup 事件监听器到一个跨度,它将通过 js 增加同级文本输入中的值...想想允许用户单击增加或减少 a 的箭头控件值(value)。问题:如果用户点击跨度太快,Safari/Chrome 将其解释为双击并开始选择附近的元素并将它们呈现在蓝色框下。这些浏览器中必须有一个默认行为,即当您双击时自动选择附近的文本作为一种便利功能。

我已经尝试添加一个 dblclick 事件来捕获该事件并运行 preventDefault()stopPropagation() 或返回 false。但是,没有任何效果。我还向附近的元素添加了 -user-select: none; CSS 规则。但是,浏览器会跳过这些并找到其他要突出显示的内容。关于如何防止这种行为有什么想法吗?

最佳答案

在您定义的双击事件回调中,将要单击的对象设置为焦点。 https://developer.mozilla.org/en/DOM/element.focus

编辑:另外,尝试在短时间后而不是立即调用焦点。

替代方案概述如下:

<script type="text/javascript">
    function test() {
        // something
    }
</script>

<style type="text/css">

span::selection,
span *::selection {
    background: transparent;
}
span {
    -moz-user-select: none;
    -khtml-user-select: none;
}

</style>

<span>surrounding text <a href="#" onclick="test(); return false;">Link</a> more text</span>

双击超链接不会导致选中周围的文本。另外,请参阅此问题以了解删除选择的 js 函数:

Prevent text selection after double click

关于html - 处理按钮双击的默认行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7081438/

相关文章:

HTML&CSS 有没有比复制更好的方法来做到这一点?

CSS 文件的 ASP.NET 页面处理

javascript - Google map API - 未捕获错误 : Module: 'earth' not found

google-chrome - driver.manage().window().maximize();不管用

javascript - 尝试创建由 Canvas 中的按钮单击触发的撤消功能

html - 我怎样才能让每一个设备的一切都居中?

html - 如何与此处的下拉按钮的其他文本框垂直成比例对齐?

html - Youtube 视频嵌入 - 不显示

google-chrome - Chrome 的 AA 扩展问题

php - 无法将表单中的数据插入mysql