javascript - CSS 或 Javascript 禁用 CTRL + A 中的文本选择突出显示

标签 javascript css html events

注意:这个问题不同于How to disable text selection highlighting using CSS?

在提问之前,我阅读了上述问题的讨论历史。一切正常,除了我可以允许 CTRL+A(全选)仅在输入元素内工作。

那是因为我在桌面上部署我的 HTML5 应用程序,我希望 GUI/Forms 应用程序具有相同的行为。

起点是什么?尝试使用 keypress 事件绑定(bind)所有元素并观察 CTRL + A keyCode?这种方法的缺点是必须控制一切并注意重新渲染。

我更喜欢 CSS 解决方案,但欢迎提出任何想法。

提前致谢。

@EDIT:我发现了这个丑陋的解决方案,但有效:

$(document).keydown(function(objEvent) {
    if (objEvent.ctrlKey) {
        if ((objEvent.keyCode === 65) || (objEvent.keyCode == 97)) {
            if ($(objEvent.target).not("input").disableTextSelect().length) {
                return false;
            }
        }
    }
});

最佳答案

可能重复。

如果允许使用 jquery,here是您正在寻找的答案。

65 是 ascii 表示“A”,97 表示“a”,如果您想同时考虑这两者的话。

$(function(){   
    $(document).keydown(function(objEvent) {

            if (objEvent.ctrlKey) {
                if ($(objEvent.target).not('input')){
                    if (objEvent.keyCode == 65 || objEvent.keyCode == 97) {                         
                        objEvent.preventDefault();
                    }
                }
            }        
    });
});   

编辑:根据您的评论修改以允许输入。

编辑 2:如果包含 jQuery UI,则可以使用 disableSelection() 而不是 disableTextSelect() 否则试试 this.

编辑 3:抱歉,jQuery 1.9 中不推荐使用 disableSelection(),请参阅 here. .试试这个简单的 hack 而不是 disableSelection()。将 objEvent.disableTextSelect(); 替换为上面的 objEvent.preventDefault();

编辑 4:让它更干净一些。

关于javascript - CSS 或 Javascript 禁用 CTRL + A 中的文本选择突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16725566/

相关文章:

javascript - 替换为字符串模板,但捕获丢失的变量

javascript - 为什么 getScript 不能从外部脚本运行?

css - 将元素固定到屏幕底部

css - 打开 chrome 开发工具时,响应式网站中断

php - 从登录页面将数据提交到 MySQL 数据库的代码

javascript - 使用 jquery 克隆行

javascript - 如何通过循环将解析推送到数组?

html - SCSS - 条件包含不起作用并且所有 block 都被执行

javascript - 每次单击按钮时如何更改我的背景

javascript - 如何禁用 selectize.js?