visitor-id.ts 579 B

12345678910111213141516
  1. /**
  2. * 访客 ID:写入 localStorage,保证为可安全表示的正整数。
  3. * 旧版 `${Date.now()}${random}` 拼接过长会导致精度问题,此处会迁移为新格式。
  4. */
  5. export function getOrCreateVisitorId(): number {
  6. const stored = window.localStorage.getItem("visitor_id");
  7. if (stored) {
  8. const parsed = Number.parseInt(stored, 10);
  9. if (!Number.isNaN(parsed) && parsed > 0) {
  10. return parsed;
  11. }
  12. }
  13. const id = Date.now() * 1000 + Math.floor(Math.random() * 100000);
  14. window.localStorage.setItem("visitor_id", String(id));
  15. return id;
  16. }