CSS 或 Javascript 禁用从 CTRL + A 突出显示的文本选择
Posted
技术标签:
【中文标题】CSS 或 Javascript 禁用从 CTRL + A 突出显示的文本选择【英文标题】:CSS or Javascript to disable text selection highlighting from CTRL + A 【发布时间】:2013-05-19 11:59:54 【问题描述】:注意:这个问题与How to disable text selection highlighting using CSS?不同
在提问之前,我阅读了上述问题的讨论历史。一切正常,除了我可以允许CTRL+A
(全选)仅在输入元素内有效。
那是因为我正在桌面上部署我的 html5 应用程序,我希望 GUI/Forms 应用程序具有相同的行为。
起点是什么?尝试使用 keypress
事件绑定所有元素并观察 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;
);
【问题讨论】:
keypress
不会抓住 CTRL 但keydown
应该可以工作。
您是要允许 Ctrl+A,还是不允许 Ctrl+A?
禁止 <body>
并允许在 <input>
内
问题不清楚。您希望仅使用 Ctrl+A 选择文本吗?
你到底为什么要这样做?尝试规避基本浏览器行为不是您的事。
【参考方案1】:
可能重复。
如果您被允许使用 jquery,here 就是您正在寻找的答案。
65 是 'A' 的 ascii,而 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.。试试这个简单的技巧,而不是 disableSelection()。将objEvent.disableTextSelect();
替换为上面的objEvent.preventDefault();
。
编辑 4:让它更干净一些。
【讨论】:
我试试这个例子,结果TypeError: objEvent.disableTextSelect is not a function
我已经注入这个插件并再次测试code.jdempster.com/jQuery.DisableTextSelect/… - 不工作
@AllysondePaula 您包括哪个版本的 jQuery?您是否尝试过第二种方法(包括 jQuery UI 和使用 disableSelection())?您遇到什么错误?
jQuery v1.9.1 和 jQuery UI - v1.10.1 - disableSelection()
也不起作用
我找到了一个解决方案 - 它很丑,但有效,请参阅我的编辑。我会接受您的正确回答,因为几乎可以解决部分问题。【参考方案2】:
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
使用上述 CSS 属性来阻止该行为。
【讨论】:
OP 专门要求提供适用于Ctrl+A
的解决方案。
重复的问题,在这里得到了相同的答案***.com/questions/14598070/…
我的印象是 OP 希望允许 Ctrl+A:“一切正常,除了我可以允许 CTRL+A(全选)仅在输入元素内有效。 "以上是关于CSS 或 Javascript 禁用从 CTRL + A 突出显示的文本选择的主要内容,如果未能解决你的问题,请参考以下文章
Vanilla JavaScript:禁用整个网站中的所有关键组合
如何使用 javascript css 或 html attr 禁用 iOS 链接预览