select事件疑问:选中页面文本时控制台为何无输出?
问题原因及解决方法
- 问题根源:
select事件仅会在<input>、<textarea>这类可编辑表单元素内部选中文本时触发,直接给document.body绑定该事件,无法捕获页面普通文本的选中操作。 - 正确实现方式:如果要监听页面中任意文本的选中,应该使用
selectionchange事件,它会在用户选中页面任意文本(包括普通文本)时触发。
修改后的代码示例:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> dhksdh lsjkdlskdj s fjlkfjs d lsdjslkdj s sldjsldkj s <script> const onSelect = () => { console.log('onSelect text') } document.addEventListener('selectionchange', onSelect) </script> </body> </html>
补充:如果只需监听特定表单控件的文本选中,可将select事件直接绑定到对应的<input>或<textarea>元素上,此时事件可正常触发。
内容的提问来源于stack exchange,提问作者Eli Tref
相关产品推荐
相关产品推荐

