From 620968dae3a56bf1beae88452e4cfc0beebc0896 Mon Sep 17 00:00:00 2001 From: xiaoxian521 <1923740402@qq.com> Date: Fri, 21 Jul 2023 17:02:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=98=BB=E6=AD=A2`?= =?UTF-8?q?=E9=94=AE=E7=9B=98F12`=E3=80=81`=E6=B5=8F=E8=A7=88=E5=99=A8?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=8F=B3=E9=94=AE=E8=8F=9C=E5=8D=95`?= =?UTF-8?q?=E3=80=81`=E9=A1=B5=E9=9D=A2=E5=85=83=E7=B4=A0=E9=80=89?= =?UTF-8?q?=E4=B8=AD`=E3=80=81`=E5=9B=BE=E7=89=87=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=8F=AF=E6=8B=96=E5=8A=A8`=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/preventDefault.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/utils/preventDefault.ts diff --git a/src/utils/preventDefault.ts b/src/utils/preventDefault.ts new file mode 100644 index 000000000..42da8dfbd --- /dev/null +++ b/src/utils/preventDefault.ts @@ -0,0 +1,28 @@ +import { useEventListener } from "@vueuse/core"; + +/** 是否为`img`标签 */ +function isImgElement(element) { + return typeof HTMLImageElement !== "undefined" + ? element instanceof HTMLImageElement + : element.tagName.toLowerCase() === "img"; +} + +// 在 src/main.ts 引入并调用即可 import { addPreventDefault } from "@/utils/preventDefault"; addPreventDefault(); +export const addPreventDefault = () => { + // 阻止通过键盘F12快捷键打开浏览器开发者工具面板 + useEventListener( + window.document, + "keydown", + ev => ev.key === "F12" && ev.preventDefault() + ); + // 阻止浏览器默认的右键菜单弹出(不会影响自定义右键事件) + useEventListener(window.document, "contextmenu", ev => ev.preventDefault()); + // 阻止页面元素选中 + useEventListener(window.document, "selectstart", ev => ev.preventDefault()); + // 浏览器中图片通常默认是可拖动的,并且可以在新标签页或窗口中打开,或者将其拖动到其他应用程序中,此处将其禁用,使其默认不可拖动 + useEventListener( + window.document, + "dragstart", + ev => isImgElement(ev?.target) && ev.preventDefault() + ); +};