前端杂症--div等容器keydown事件无效(包括vue的@keydown)

先说问题原因

onKeydown事件触发条件:容器中某个元素获取焦点时,按键。因此无效的原因是当前容器内并没有元素获取焦点。

场景1:应用中监听快捷键

  • 解决方案:利用全局监听
	// 
	window.onKeydown
	document.onkeydown

场景2:窗口中多个应用,监听各自的快捷键。(重点)

与“场景一”不同的是,需要真正在某个自定义容器中监听,并且不污染全局
  • 解决方案: 利用contenteditable属性,让容器可编辑。(需要注意可编辑带来的影响,代码中会说明)
<!--监听容器-->
<div id="evnetContiner" contenteditable="true">
	<!--容器中内容包裹,用于隔离父容器的contenteditable属性对子元素造成影响-->
	<div id="continer" contenteditable="false"></div>
</div>
const EventContiner = document.querySelector('#evnetContiner');
      
EventContiner.addEventListener('keydown', (e) => {
	// do ...
	// 防止输入内容,影响布局。实测子元素input、textArea不会影响
   e.preventDefault();
});

注意:

    1. contenteditable会影响子元素,使子元素也变成可编辑,需要中间层隔离。
    1. 键盘行为要取消掉(preventDefault),不然会输入内容。
    1. 目前谷歌可用,方案仅做参考,兼容性未测试,待测试后补充兼容说明。
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以看出el-pagination是一个分页组件,用于在Vue.js中实现分页功能。根据引用\[1\]和引用\[2\]的代码,el-pagination组件可以接受一些属性,如currentPage(当前页码)、total(总条目数)、pageSize(每页显示条目数)等。同时,它还可以监听一些事件,如size-change(每页显示条目数改变时触发事件)、current-change(当前页码改变时触发事件)等。 对于问题"el-pagination 输入正整数",根据提供的引用内容,可以看出el-pagination组件的currentPage属性是用来表示当前页码的。因此,如果想要输入正整数作为当前页码,只需要将输入的值绑定到currentPage属性上即可。例如,在el-pagination组件中,可以使用v-model指令将输入框的值与currentPage属性进行双向绑定,确保输入的值为正整数。 示例代码如下: ```html <el-pagination :current-page.sync="currentPage" ...></el-pagination> ``` 其中,currentPage是一个在Vue实例中定义的变量,用于存储当前页码的值。通过.sync修饰符,可以实现双向绑定,确保输入的值为正整数。 请注意,以上代码仅为示例,具体的实现方式可能会根据项目的具体情况而有所不同。 #### 引用[.reference_title] - *1* *3* [前端模板-2【vue部分小功能、bug处理】](https://blog.csdn.net/weixin_45565886/article/details/128323386)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Element UI _ 疑难杂症](https://blog.csdn.net/weixin_58099903/article/details/121293179)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值