有一块div
元素包含一段内容, 想要利用 CTRL+A
选中那块div
元素下的的区间. 同时我又不想选中 div之外的内容, 默认状况下会将整个html页面能够选中的内容选中.javascript
<div> <p>我想被选中</p> </div>
<div contenteditable="true" id="app"> <p> 我想被Ctrl+A选中 </p> <br /> <p> 我也想被Ctrl+A选中 </p> </div> <script> var app = document.getElementById('app'); app && app.addEventListener('keydown', function (event) { if ((event.ctrlKey || event.metaKey) && event.keyCode == 65) { console.log('allow') } else { event.preventDefault ? event.preventDefault() : event.returnValue = false; } }); </script>
原理css
contenteditable
属性, 让元素拥有控件自带的相似input
, textarea
输入特性, 那么使用 ctrl + a
或 command + a
(mac) 就会给你选中里面的文本元素.contenteditable
会让用户的按键属性出现编辑行为, 因此使用了keydown事件检查, 只容许 ctrl + a
和 command + a
两种组合键经过默认行为. 其他行为均阻止浏览器默认行为.DEMO html
默认属性: false
可选属性: true | falsejava
HTML5 引入的新属性web
默认属性: auto;
可选属性: none | text | all | element;segmentfault
.disable-select { user-select: none; -webkit-select: none; }