lex há 1 ano atrás
pai
commit
e2e3a7ee32
4 ficheiros alterados com 59 adições e 5 exclusões
  1. 17 0
      src/App.tsx
  2. 12 1
      src/components/layout/index.tsx
  3. 27 4
      src/utils/index.ts
  4. 3 0
      src/views/attend-class/index.tsx

+ 17 - 0
src/App.tsx

@@ -150,8 +150,25 @@ export default defineComponent({
         history.go(0);
       }
     };
+
     onMounted(() => {
       window.addEventListener('message', handleOpen);
+
+      // 禁用右键菜单
+      document.addEventListener('contextmenu', function (event) {
+        event.preventDefault();
+      });
+      // 禁用浏览器快捷键
+      document.addEventListener('keydown', function (event) {
+        // 屏蔽 F12 和 Ctrl+Shift+I
+        if (
+          event.key === 'F12' ||
+          (event.ctrlKey && event.shiftKey && event.key === 'I') ||
+          (event.metaKey && event.altKey && event.key === 'I')
+        ) {
+          event.preventDefault();
+        }
+      });
     });
     onUnmounted(() => {
       window.removeEventListener('message', handleOpen);

+ 12 - 1
src/components/layout/index.tsx

@@ -29,7 +29,12 @@ import TimerMeter from '../timerMeter';
 import { useRoute, useRouter } from 'vue-router';
 import { vaildUrl } from '/src/utils/urlUtils';
 import ChioseModal from '/src/views/home/modals/chioseModal';
-import { eventGlobal, px2vw, px2vwH } from '@/utils/index';
+import {
+  eventGlobal,
+  iframeDislableKeyboard,
+  px2vw,
+  px2vwH
+} from '@/utils/index';
 import PlaceholderTone from './modals/placeholderTone';
 import { state } from '/src/state';
 import PreviewWindow from '/src/views/preview-window';
@@ -766,6 +771,12 @@ export default defineComponent({
               scrolling="no"
               frameborder="0"
               width="100%"
+              onLoad={(val: any) => {
+                console.log(val.target, 'val');
+                iframeDislableKeyboard(val.target);
+
+                // iframeDom?.contentDocument
+              }}
               height={'650px'}></iframe>
           </div>
         </NModal>

+ 27 - 4
src/utils/index.ts

@@ -374,7 +374,6 @@ export function checkUrlType(urlType: string) {
   return 'video';
 }
 
-
 const instruments: any = {
   'Acoustic Grand Piano': '大钢琴',
   'Bright Acoustic Piano': '明亮的钢琴',
@@ -581,13 +580,13 @@ const instruments: any = {
 export const getInstrumentName = (name = '') => {
   name = name.toLocaleLowerCase().replace(/ /g, '');
   if (!name) return '';
-  for (let key in instruments) {
+  for (const key in instruments) {
     const _key = key.toLocaleLowerCase().replace(/ /g, '');
     if (_key.includes(name)) {
       return instruments[key];
     }
   }
-  for (let key in instruments) {
+  for (const key in instruments) {
     const _key = key.toLocaleLowerCase().replace(/ /g, '');
     if (name.includes(_key)) {
       return instruments[key];
@@ -647,4 +646,28 @@ export const sortMusical = (name: string, index: number) => {
       break;
   }
   return sortId;
-};
+};
+
+export const iframeDislableKeyboard = (iframeDom: any) => {
+  // 在 iframe 内部注入脚本禁用右键菜单
+  const script = document.createElement('script');
+  script.innerHTML = `
+      document.addEventListener('contextmenu', function(e) {
+          e.preventDefault();
+      });
+
+      document.addEventListener('keydown', function (event) {
+        // 屏蔽 F12 和 Ctrl+Shift+I
+        if (
+          event.key === 'F12' ||
+          (event.ctrlKey && event.shiftKey && event.key === 'I') ||
+          (event.metaKey && event.altKey && event.key === 'I')
+        ) {
+          event.preventDefault();
+        }
+      });
+            `;
+  if (iframeDom.contentWindow.document.body) {
+    iframeDom?.contentDocument?.body.appendChild(script);
+  }
+};

+ 3 - 0
src/views/attend-class/index.tsx

@@ -1967,6 +1967,9 @@ export default defineComponent({
               scrolling="no"
               frameborder="0"
               width="100%"
+              onLoad={(val: any) => {
+                console.log(val, 'val');
+              }}
               height={'650px'}></iframe>
           </div>
         </NModal>