Files
NBA-Vue/src/main.js

131 lines
4.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import router from './router'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import { createPinia } from 'pinia'
import { createApp } from 'vue'
import App from './App.vue'
import { useUserStore } from '@/stores/user'
const app = createApp(App)
const pinia = createPinia()
app.use(router)
app.use(ElementPlus)
app.use(pinia)
// 应用启动时尝试根据后端 session 恢复登录态(需要后端正确返回 Set-Cookie
const userStore = useUserStore(pinia)
userStore.fetchCurrentUser().catch(() => {
// 静默失败,维持未登录状态
})
app.mount('#app')
// ------------------ DevTools 防护(弱保护,易被绕过) ------------------
// 说明:浏览器端无法绝对禁止 DevTools以下脚本只是拦截常见快捷键并检测 DevTools 打开,
// 在检测到时展示一个覆盖提示,增加逆向门槛,但有经验者仍可绕过。
// 拦截常见的打开 DevTools / 查看源码 的快捷键
// function preventDevShortcuts(e) {
// // F12
// if (e.keyCode === 123) {
// e.preventDefault()
// return false
// }
// // Ctrl+Shift+I / Ctrl+Shift+J / Ctrl+U / Ctrl+S
// if (e.ctrlKey && e.shiftKey && (e.key === 'I' || e.key === 'i' || e.key === 'J' || e.key === 'j')) {
// e.preventDefault()
// return false
// }
// if (e.ctrlKey && (e.key === 'U' || e.key === 'u' || e.key === 'S' || e.key === 's')) {
// e.preventDefault()
// return false
// }
// }
// // 禁用右键菜单(可选)
// function preventContextMenu(e) {
// // 如果你不想全局禁止右键,可以把这个函数内的逻辑改为更精确的判断
// // e.preventDefault()
// }
// // 检测 DevTools 是否打开(基于窗口尺寸差异的启发式方法)
// function createDevToolsDetector(onOpen, onClose) {
// let devtoolsOpen = false
// const threshold = 160 // 阈值,视浏览器和平台可调整
// function scan() {
// try {
// const widthDiff = window.outerWidth - window.innerWidth
// const heightDiff = window.outerHeight - window.innerHeight
// const currentlyOpen = widthDiff > threshold || heightDiff > threshold
// if (currentlyOpen && !devtoolsOpen) {
// devtoolsOpen = true
// onOpen && onOpen()
// } else if (!currentlyOpen && devtoolsOpen) {
// devtoolsOpen = false
// onClose && onClose()
// }
// } catch (e) {
// // 忽略
// }
// }
// const id = setInterval(scan, 800)
// // 返回停止检测的函数
// return () => clearInterval(id)
// }
// // 显示覆盖提示(简单实现)
// function showOverlayMessage() {
// debugger
// if (document.getElementById('__devtools_block_overlay')) return
// const o = document.createElement('div')
// o.id = '__devtools_block_overlay'
// Object.assign(o.style, {
// position: 'fixed',
// inset: '0',
// background: 'rgba(0,0,0,0.7)',
// color: '#fff',
// display: 'flex',
// alignItems: 'center',
// justifyContent: 'center',
// zIndex: '999999',
// textAlign: 'center',
// padding: '20px'
// })
// o.innerHTML = `<div style="max-width:560px"><h2 style="margin:0 0 12px;font-size:20px">检测到开发者工具</h2><p style="margin:0 0 18px;color:#ddd">为保护内容,当前页面在检测到开发者工具打开时被屏蔽。若要继续,请刷新页面或关闭开发者工具。</p><button id="__devtools_block_close" style="padding:10px 16px;border-radius:6px;border:none;background:#1890ff;color:#fff;font-weight:600;cursor:pointer">刷新页面</button></div>`
// document.body.appendChild(o)
// const btn = document.getElementById('__devtools_block_close')
// if (btn) btn.addEventListener('click', () => location.reload())
// }
// function removeOverlayMessage() {
// const el = document.getElementById('__devtools_block_overlay')
// if (el) el.remove()
// }
// // 启动防护(放在监听器里以避免 SSR 问题)
// if (typeof window !== 'undefined') {
// window.addEventListener('keydown', preventDevShortcuts, { capture: true })
// window.addEventListener('contextmenu', preventContextMenu, { capture: true })
// const stopDetector = createDevToolsDetector(() => {
// // 打开时触发:显示覆盖提示
// try { showOverlayMessage() } catch (e) {}
// }, () => {
// // 关闭时触发:移除覆盖
// try { removeOverlayMessage() } catch (e) {}
// })
// // 可选:在页面卸载时清理
// window.addEventListener('beforeunload', () => {
// window.removeEventListener('keydown', preventDevShortcuts, { capture: true })
// window.removeEventListener('contextmenu', preventContextMenu, { capture: true })
// stopDetector()
// })
// }
// ------------------ End DevTools 防护 ------------------