1
0
mirror of https://github.com/ZeroCatDev/Classworks.git synced 2025-12-07 13:03:59 +00:00

refactor: 修复fingerpointjs名称被拦截的问题

This commit is contained in:
Sunwuyuan 2025-12-06 13:55:39 +08:00
parent 3d81ddb8f9
commit d50788c1f5
No known key found for this signature in database
GPG Key ID: A6A54CF66F56BB64
5 changed files with 51 additions and 25 deletions

View File

@ -226,7 +226,7 @@
<script>
import {ref, onMounted, computed} from "vue";
import { useRouter } from 'vue-router'
import { getVisitorId } from '@/utils/fingerprint'
import { getVisitorId } from '@/utils/visitorId'
import packageJson from "../../../package.json";
export default {

View File

@ -21,7 +21,7 @@ import {createApp} from 'vue'
//import '@examaware-cs/player/dist/player.css'
import messageService from './utils/message';
import { getVisitorId } from './utils/fingerprint';
import { getVisitorId } from './utils/visitorId';
const app = createApp(App)

View File

@ -22,7 +22,7 @@
<script setup>
import { ref, onMounted } from 'vue'
import { getVisitorId, getFingerprintData } from '@/utils/fingerprint'
import { getVisitorId, getFingerprintData } from '@/utils/visitorId'
const visitorId = ref('')
const fingerprintData = ref({})

View File

@ -1,22 +0,0 @@
import FingerprintJS from '@fingerprintjs/fingerprintjs'
let fpPromise
export const loadFingerprint = () => {
if (!fpPromise) {
fpPromise = FingerprintJS.load()
}
return fpPromise
}
export const getVisitorId = async () => {
const fp = await loadFingerprint()
const result = await fp.get()
return result.visitorId
}
export const getFingerprintData = async () => {
const fp = await loadFingerprint()
const result = await fp.get()
return result
}

48
src/utils/visitorId.js Normal file
View File

@ -0,0 +1,48 @@
let fpPromise
const buildFallbackAgent = (error) => ({
get: async () => ({
visitorId: 'unknown',
error: error?.message || String(error || ''),
fallback: true,
}),
})
const loadFingerprintLib = async () => {
try {
const mod = await import('@fingerprintjs/fingerprintjs')
return mod?.default || mod
} catch (err) {
console.warn('Fingerprint library blocked or failed to load; using fallback agent.', err)
return null
}
}
export const loadFingerprint = () => {
if (!fpPromise) {
fpPromise = (async () => {
const FingerprintJS = await loadFingerprintLib()
if (!FingerprintJS) return buildFallbackAgent(new Error('fingerprint module unavailable'))
try {
return await FingerprintJS.load()
} catch (err) {
console.warn('FingerprintJS.load failed, using fallback agent.', err)
return buildFallbackAgent(err)
}
})()
}
return fpPromise
}
export const getVisitorId = async () => {
const fp = await loadFingerprint()
const result = await fp.get()
return result?.visitorId || 'unknown'
}
export const getFingerprintData = async () => {
const fp = await loadFingerprint()
const result = await fp.get()
return result
}