main.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. // @ts-ignore
  2. import App from './App.svelte';
  3. import './app.css';
  4. import { delParamsUrl } from './utils/index';
  5. import { switchTheme } from '../../packages/stdf/theme';
  6. import themes from '../../demo/src/data/themes';
  7. const currentTheme = localStorage.getItem('theme_color') || 'STDF';
  8. // 设置默认主题色
  9. themes.forEach(item => {
  10. if (item.name === currentTheme) {
  11. const theme = item.theme;
  12. switchTheme(theme);
  13. // 修改 HTML 的 meta name="theme-color" 属性,适配 Safari 的 tab 背景色,需要设置 light 和 dark 两种颜色
  14. const safariLight = theme.color.primaryWhite;
  15. const safariDark = theme.color.darkBlack;
  16. // 查找 meta 标签,name="theme-color" 且 media="(prefers-color-scheme: light)"
  17. const lightMeta = document.querySelector('meta[name="theme-color"][media="(prefers-color-scheme: light)"]');
  18. // 查找 meta 标签,name="theme-color" 且 media="(prefers-color-scheme: dark)"
  19. const darkMeta = document.querySelector('meta[name="theme-color"][media="(prefers-color-scheme: dark)"]');
  20. // 如果找到了,就修改它的 content 属性
  21. if (lightMeta) {
  22. lightMeta.setAttribute('content', safariLight);
  23. }
  24. if (darkMeta) {
  25. darkMeta.setAttribute('content', safariDark);
  26. }
  27. }
  28. });
  29. let urlLang = window.location.href.split('?')[1];
  30. if (!urlLang || (urlLang && !urlLang.includes('lang'))) {
  31. if (!localStorage.getItem('lang')) {
  32. //获取浏览器语言前两位
  33. const lang = navigator.language.substring(0, 2);
  34. if (lang === 'en') {
  35. localStorage.setItem('lang', 'en_US');
  36. } else {
  37. localStorage.setItem('lang', 'zh_CN');
  38. }
  39. }
  40. } else {
  41. let urlParams = new URLSearchParams(urlLang);
  42. localStorage.setItem('lang', urlParams.get('lang'));
  43. setTimeout(() => {
  44. // window.location.href = window.location.href.replace(/(\?|#)[^'"]*/, '');//去除参数
  45. // @ts-ignore
  46. window.history.pushState({}, 0, delParamsUrl(window.location.href, 'lang')); //刷新页面
  47. }, 10);
  48. }
  49. if (localStorage.getItem('theme') === 'dark') {
  50. document.documentElement.classList.add('dark');
  51. } else if (localStorage.getItem('theme') === 'light') {
  52. document.documentElement.classList.remove('dark');
  53. } else {
  54. if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
  55. document.documentElement.classList.add('dark');
  56. } else {
  57. document.documentElement.classList.remove('dark');
  58. }
  59. }
  60. // 根据亮暗模式动态切换 favicon
  61. // const darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
  62. // handleDarkmode(darkModeMediaQuery);
  63. // function handleDarkmode(e) {
  64. // var darkModeOn = e.matches;
  65. // var favicon = document.querySelector('link[rel="icon"]'); // 获取声明中含 rel="icon" 的元素,你可以根据需要添加更多
  66. // if (!favicon) {
  67. // return;
  68. // }
  69. // if (darkModeOn) {
  70. // favicon.href = '/favicon_black.ico'; //黑暗模式下的 favicon
  71. // } else {
  72. // favicon.href = '/favicon.ico'; //其它时候的 favicon
  73. // }
  74. // }
  75. // darkModeMediaQuery.addEventListener('change', handleDarkmode);
  76. const app = new App({
  77. target: document.body,
  78. });