JavaScrip之禁止快捷键打印、禁用组合键、监听、阻止、addEventListener、DOMContentLoaded、preventDefault


代码

// 在网页加载完成后运行代码
document.addEventListener("DOMContentLoaded", () => {
    
    
    // 监听按键按下事件
    document.addEventListener("keydown", (event) => {
    
    
        // 判断按下的键是否为Ctrl键和P键
        if (event.ctrlKey && event.key === "p") {
    
    
            // 阻止事件默认行为(打印页面)
            event.preventDefault();
            // 可以选择在这里添加自己的提示或处理逻辑
            console.log("ctrl + p 已被阻止");
        }
    });
});

addEventListener

w3school
定义

addEventListener()方法将事件处理程序附加到元素。

参数 描述
type

必需。事件的名称。

请不要使用 "on" 前缀。

请使用 "click" 而不是 "onclick"。


DOM事件的完整列表

function 必需。事件发生时运行的函数。
useCapture

可选(default = false)。

  • false - 处理程序在冒泡阶段执行。
  • true - 处理程序在捕获阶段执行。

技术细节

该方法将把指定的事件监听器函数添加到当前节点的监听器集合中,以处理指定类型type的事件。如果useCapturetrue,则监听器被注册为捕捉事件监听器。如果useCapturefalse,它被注册为普通事件监听器。
addEventListener()可能被调用多次,在同一个节点上为同一种类型的事件注册多个事件句柄。但要注意,DOM不能确定多个事件句柄被调用的顺序。
如果一个事件监听器函数在同一个节点上用相同的typeuseCapture参数注册了两次,那么第二次注册将被忽略。如果正在处理一个节点上的事件时,在这个节点上注册了一个新的事件监听器,则不会为那个事件调用新的事件监听器。
当用Node.cloneNode()方法或Document.importNode()方法复制一个Document节点时,不会复制为原始节点注册的事件监听器。
这个方法也在DocumentWindow对象上定义了,而且工作方式类似。


DOMContentLoaded

MDN

HTML文档完全解析,且所有延迟脚本(<script defer src=“…”><script type=“module”>)下载和执行完毕后,会触发DOMContentLoaded事件。它不会等待图片、子框架和异步脚本等其他内容完成加载。
DOMContentLoaded不会等待样式表加载,但延迟脚本会等待样式表,而且DOMContentLoaded事件排在延迟脚本之后。此外,非延迟或异步的脚本(如<script>)将等待已解析的样式表加载。
另一个事件load只能用于检测完全加载的页面。有一个常见的错误就是在DOMContentLoaded事件更合适时使用了load事件。
这个事件不可取消。


preventDefault

w3school

如果事件是可取消的,则preventDefault()方法会取消该事件,这意味着属于该事件的默认操作将不会发生。
举例,在以下情况下有用:
单击“提交”按钮,阻止其提交表单
单击链接,防止链接跟随URL
并非所有活动都可以取消。请使用cancelable属性来确定事件是否可取消。
preventDefault()方法不会阻止事件通过DOM进一步传播。请使用stopPropagation()方法来解决。


MDN

Event接口的preventDefault()方法,告诉用户代理:如果此事件没有被显式处理,它默认的动作也不应该照常执行。此事件还是继续传播,除非碰到事件监听器调用stopPropagation()stopImmediatePropagation(),才停止传播。

猜你喜欢

转载自blog.csdn.net/weixin_51157081/article/details/132433953