- Scan ID:
- 911ca2cf-fa6e-46fc-9240-a01bf9456c6bFinished
- Submitted URL:
- https://gcore1-shksgss.zazafast2020.info/
- Report Finished:
Links · 0 found
The outgoing links identified from the page
JavaScript Variables · 30 found
Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope
Name | Type |
---|---|
onbeforetoggle | string |
documentPictureInPicture | string |
onscrollend | string |
Vue | string |
moment | string |
__core-js_shared__ | string |
antd | string |
axios | string |
Qs | string |
sizeFormat | string |
Console log messages · 1 found
Messages logged to the web console
Type | Category | Log |
---|---|---|
error | network |
|
HTML
The raw HTML body of the page
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="/assets/ant-design-vue/antd.min.css"> <link rel="stylesheet" href="/assets/element-ui/theme-chalk/display.css"> <link rel="stylesheet" href="/assets/css/custom.min.css?2.4.1"> <style> [v-cloak] { display: none; } @font-face { font-display: swap; font-family: 'Vazirmatn'; font-style: normal; font-weight: 400; src: url('/assets/Vazirmatn-UI-NL-Regular.woff2') format('woff2'); unicode-range: U+0600-06FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE80-FEFC, U+0030-0039; } body { font-family: -apple-system, BlinkMacSystemFont, 'Vazirmatn', 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; } </style> <title>gcore1-shksgss.zazafast2020.info-Welcome</title> </head> <body class="light"><div id="message" class="light"></div> <style> html * { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } h1 { text-align: center; height: 110px; } .ant-btn, .ant-input { height: 50px; border-radius: 30px; } .ant-input-group-addon { border-radius: 0 30px 30px 0; width: 50px; font-size: 18px; } .ant-input-affix-wrapper .ant-input-prefix { left: 23px; } .ant-input-affix-wrapper .ant-input:not(:first-child) { padding-left: 50px; } .centered { display: flex; text-align: center; align-items: center; justify-content: center; width: 100%; } .title { font-size: 32px; } .title b { font-weight: bold !important; } #app { overflow: hidden; } #login { animation: charge 0.5s both; background-color: #fff; border-radius: 2rem; padding: 3rem; transition: all 0.3s; user-select:none; -webkit-user-select:none; -moz-user-select: none; } #login:hover { box-shadow: 0 2px 8px rgba(0, 0, 0, 0.09); } @keyframes charge { from { transform: translateY(5rem); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .under { background-color: #c7ebe2; z-index: 0; } .dark .under { background-color: var(--dark-color-login-wave); } .dark #login { background-color: var(--dark-color-surface-100); } .dark h1 { color: rgba(255, 255, 255); } .ant-form-item { margin-bottom: 16px; } .ant-btn-primary-login { width: 100%; } .ant-btn-primary-login:focus, .ant-btn-primary-login:hover { color: #fff; background-color: #006655; border-color: #006655; background-image: linear-gradient( 270deg, rgba(123, 199, 77, 0) 30%, #009980, rgba(123, 199, 77, 0) 100% ); background-repeat: no-repeat; animation: ma-bg-move ease-in-out 5s infinite; background-position-x: -500px; width: 95%; animation-delay: -0.5s; box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); } .ant-btn-primary-login.active, .ant-btn-primary-login:active { color: #fff; background-color: #006655; border-color: #006655; } @keyframes ma-bg-move { 0% { background-position: -500px 0; } 50% { background-position: 1000px 0; } 100% { background-position: 1000px 0; } } .wave-btn-bg { position: relative; border-radius: 25px; width: 100%; transition: all 0.3s cubic-bezier(.645,.045,.355,1); } .dark .wave-btn-bg { color: #fff; position: relative; background-color: #0a7557; border: 2px double transparent; background-origin: border-box; background-clip: padding-box, border-box; background-size: 300%; width: 100%; z-index: 1; } .dark .wave-btn-bg:hover {animation: wave-btn-tara 4s ease infinite;} .dark .wave-btn-bg-cl { background-image: linear-gradient(rgba(13, 14, 33, 0), rgba(13, 14, 33, 0)), radial-gradient(circle at left top, #006655, #009980, #006655) !important; border-radius: 3em; } .dark .wave-btn-bg-cl:hover { width: 95%; } .dark .wave-btn-bg-cl:before { position: absolute; content: ""; top: -5px; left: -5px; bottom: -5px; right: -5px; z-index: -1; background: inherit; background-size: inherit; border-radius: 4em; opacity: 0; transition: 0.5s; } .dark .wave-btn-bg-cl:hover::before { opacity: 1; filter: blur(20px); animation: wave-btn-tara 8s linear infinite; } @keyframes wave-btn-tara { to { background-position: 300%; } } .dark .ant-btn-primary-login { font-size: 14px; color: #fff; text-align: center; background-image: linear-gradient( rgba(13, 14, 33, 0.45), rgba(13, 14, 33, 0.35) ); border-radius: 2rem; border: none; outline: none; background-color: transparent; height: 46px; position: relative; white-space: nowrap; cursor: pointer; touch-action: manipulation; padding: 0 15px; width: 100%; animation: none; background-position-x: 0; box-shadow: none; } .waves-header { position: fixed; width: 100%; text-align: center; background-color: #dbf5ed; color: white; z-index: -1; } .dark .waves-header { background-color: var(--dark-color-login-background); } .waves-inner-header { height: 50vh; width: 100%; margin: 0; padding: 0; } .waves { position: relative; width: 100%; height: 15vh; margin-bottom: -8px; min-height: 100px; max-height: 150px; } .parallax > use { animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite; } .dark .parallax > use { fill: var(--dark-color-login-wave); } .parallax > use:nth-child(1) { animation-delay: -2s; animation-duration: 4s; opacity: 0.2; } .parallax > use:nth-child(2) { animation-delay: -3s; animation-duration: 7s; opacity: 0.4; } .parallax > use:nth-child(3) { animation-delay: -4s; animation-duration: 10s; opacity: 0.6; } .parallax > use:nth-child(4) { animation-delay: -5s; animation-duration: 13s; } @keyframes move-forever { 0% { transform: translate3d(-90px, 0, 0); } 100% { transform: translate3d(85px, 0, 0); } } @media (max-width: 768px) { .waves { height: 40px; min-height: 40px; } } .words-wrapper { width: 100%; display: inline-block; position: relative; text-align: center; } .words-wrapper b { width: 100%; display: inline-block; position: absolute; left: 0; top: 0; } .words-wrapper b.is-visible { position: relative; } .headline.zoom .words-wrapper { -webkit-perspective: 300px; -moz-perspective: 300px; perspective: 300px; } .headline { display: flex; justify-content: center; align-items: center; } .headline.zoom b { opacity: 0; } .headline.zoom b.is-visible { opacity: 1; -webkit-animation: zoom-in 0.8s; -moz-animation: zoom-in 0.8s; animation: cubic-bezier(0.215, 0.610, 0.355, 1.000) zoom-in 0.8s; } .headline.zoom b.is-hidden { -webkit-animation: zoom-out 0.8s; -moz-animation: zoom-out 0.8s; animation: cubic-bezier(0.215, 0.610, 0.355, 1.000) zoom-out 0.4s; } @-webkit-keyframes zoom-in { 0% { opacity: 0; -webkit-transform: translateZ(100px); } 100% { opacity: 1; -webkit-transform: translateZ(0); } } @-moz-keyframes zoom-in { 0% { opacity: 0; -moz-transform: translateZ(100px); } 100% { opacity: 1; -moz-transform: translateZ(0); } } @keyframes zoom-in { 0% { opacity: 0; -webkit-transform: translateZ(100px); -moz-transform: translateZ(100px); -ms-transform: translateZ(100px); -o-transform: translateZ(100px); transform: translateZ(100px); } 100% { opacity: 1; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0); } } @-webkit-keyframes zoom-out { 0% { opacity: 1; -webkit-transform: translateZ(0); } 100% { opacity: 0; -webkit-transform: translateZ(-100px); } } @-moz-keyframes zoom-out { 0% { opacity: 1; -moz-transform: translateZ(0); } 100% { opacity: 0; -moz-transform: translateZ(-100px); } } @keyframes zoom-out { 0% { opacity: 1; -webkit-transform: translateZ(0); -moz-transform: translateZ(0); -ms-transform: translateZ(0); -o-transform: translateZ(0); transform: translateZ(0); } 100% { opacity: 0; -webkit-transform: translateZ(-100px); -moz-transform: translateZ(-100px); -ms-transform: translateZ(-100px); -o-transform: translateZ(-100px); transform: translateZ(-100px); } } .ant-menu-item .anticon { margin-right: 4px; } .ant-menu-inline .ant-menu-item { padding: 0 16px !important; } </style> <section class="ant-layout light" id="app"><main class="under ant-layout-content" style="min-height: 0px;"><div class="waves-header"><div class="waves-inner-header"></div> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 24 150 28" preserveAspectRatio="none" shape-rendering="auto" class="waves"><defs><path id="gentle-wave" d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v44h-352z"></path></defs> <g class="parallax"><use xlink:href="#gentle-wave" x="48" y="0" fill="rgba(0, 135, 113, 0.08)"></use> <use xlink:href="#gentle-wave" x="48" y="3" fill="rgba(0, 135, 113, 0.08)"></use> <use xlink:href="#gentle-wave" x="48" y="5" fill="rgba(0, 135, 113, 0.08)"></use> <use xlink:href="#gentle-wave" x="48" y="7" fill="#c7ebe2"></use></g></svg></div> <div class="ant-row-flex ant-row-flex-center ant-row-flex-middle" style="height: 100%; overflow: hidden auto;"><div class="ant-col ant-col-xs-22 ant-col-sm-20 ant-col-md-14 ant-col-lg-10 ant-col-xl-8 ant-col-xxl-6" id="login" style="margin: 3rem 0px;"><div class="ant-row-flex ant-row-flex-center"><div class="ant-col" style="width: 100%;"><h1 class="title headline zoom"><span class="words-wrapper"><b class="is-visible">Hello</b> <b>Welcome</b></span></h1></div></div> <div class="ant-row-flex ant-row-flex-center"><div class="ant-col ant-col-24"><form class="ant-form ant-form-horizontal"><div class="ant-row ant-form-item"><div class="ant-col ant-form-item-control-wrapper"><div class="ant-form-item-control"><span class="ant-form-item-children"><span class="ant-input-affix-wrapper"><span class="ant-input-prefix"><i aria-label="icon: user" class="anticon anticon-user" style="font-size: 16px;"><svg viewBox="64 64 896 896" data-icon="user" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class=""><path d="M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z"></path></svg></i></span><input placeholder="Username" type="text" name="username" autocomplete="username" autofocus="autofocus" class="ant-input"></span></span><!----></div></div></div> <div class="ant-row ant-form-item"><div class="ant-col ant-form-item-control-wrapper"><div class="ant-form-item-control"><span class="ant-form-item-children"><span class="ant-input-group-wrapper"><span class="ant-input-wrapper ant-input-group"><span class="ant-input-affix-wrapper"><span class="ant-input-prefix"><i aria-label="icon: lock" class="anticon anticon-lock" style="font-size: 16px;"><svg viewBox="64 64 896 896" data-icon="lock" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class=""><path d="M832 464h-68V240c0-70.7-57.3-128-128-128H388c-70.7 0-128 57.3-128 128v224h-68c-17.7 0-32 14.3-32 32v384c0 17.7 14.3 32 32 32h640c17.7 0 32-14.3 32-32V496c0-17.7-14.3-32-32-32zM332 240c0-30.9 25.1-56 56-56h248c30.9 0 56 25.1 56 56v224H332V240zm460 600H232V536h560v304zM484 701v53c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-53a48.01 48.01 0 1 0-56 0z"></path></svg></i></span><input placeholder="Password" type="password" name="password" autocomplete="password" class="ant-input"></span><span class="ant-input-group-addon"><i aria-label="icon: eye" tabindex="-1" class="anticon anticon-eye" style="font-size: 16px;"><svg viewBox="64 64 896 896" data-icon="eye" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class=""><path d="M942.2 486.2C847.4 286.5 704.1 186 512 186c-192.2 0-335.4 100.5-430.2 300.3a60.3 60.3 0 0 0 0 51.5C176.6 737.5 319.9 838 512 838c192.2 0 335.4-100.5 430.2-300.3 7.7-16.2 7.7-35 0-51.5zM512 766c-161.3 0-279.4-81.8-362.7-254C232.6 339.8 350.7 258 512 258c161.3 0 279.4 81.8 362.7 254C791.5 684.2 673.4 766 512 766zm-4-430c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm0 288c-61.9 0-112-50.1-112-112s50.1-112 112-112 112 50.1 112 112-50.1 112-112 112z"></path></svg></i></span></span></span></span><!----></div></div></div> <!----> <div class="ant-row ant-form-item"><div class="ant-col ant-form-item-control-wrapper"><div class="ant-form-item-control"><span class="ant-form-item-children"><div class="centered ant-row"><div class="wave-btn-bg wave-btn-bg-cl" style="height: 50px; display: inline-block;"><button type="button" class="ant-btn-primary-login ant-btn ant-btn-primary"><span>Log In</span></button></div></div></span><!----></div></div></div> <div class="ant-row ant-form-item"><div class="ant-col ant-form-item-control-wrapper"><div class="ant-form-item-control"><span class="ant-form-item-children"><div class="centered ant-row"><div class="ant-col ant-col-24"><div tabindex="0" class="ant-select ant-select-enabled" style="width: 200px;"><div role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-controls="22f1eead-2d49-4589-aa06-85e9b76f125c" class="ant-select-selection ant-select-selection--single"><div class="ant-select-selection__rendered"><div title="" class="ant-select-selection-selected-value" style="display: block; opacity: 1;"><span role="img" aria-label="l.name">🇺🇸</span> <span>English</span></div></div><span unselectable="on" class="ant-select-arrow" style="user-select: none;"><i aria-label="icon: down" class="anticon anticon-down ant-select-arrow-icon"><svg viewBox="64 64 896 896" data-icon="down" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class=""><path d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"></path></svg></i></span></div></div></div></div></span><!----></div></div></div> <div class="ant-row ant-form-item"><div class="ant-col ant-form-item-control-wrapper"><div class="ant-form-item-control"><span class="ant-form-item-children"><div class="centered ant-row"><ul role="menu" class="ant-menu ant-menu-inline ant-menu-root ant-menu-light" id="change-theme"><li role="menuitem" class="ant-menu-theme-switch ant-menu-item" style="padding-left: 24px;"><i aria-label="icon: bulb" class="anticon anticon-bulb"><svg viewBox="64 64 896 896" data-icon="bulb" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class=""><path d="M632 888H392c-4.4 0-8 3.6-8 8v32c0 17.7 14.3 32 32 32h192c17.7 0 32-14.3 32-32v-32c0-4.4-3.6-8-8-8zM512 64c-181.1 0-328 146.9-328 328 0 121.4 66 227.4 164 284.1V792c0 17.7 14.3 32 32 32h264c17.7 0 32-14.3 32-32V676.1c98-56.7 164-162.7 164-284.1 0-181.1-146.9-328-328-328zm127.9 549.8L604 634.6V752H420V634.6l-35.9-20.8C305.4 568.3 256 484.5 256 392c0-141.4 114.6-256 256-256s256 114.6 256 256c0 92.5-49.4 176.3-128.1 221.8z"></path></svg></i> <button type="button" role="switch" class="ant-switch ant-switch-small"><span class="ant-switch-inner"></span></button> <!----></li></ul></div></span><!----></div></div></div></form></div></div></div></div></main></section> <script src="/assets/vue/vue.min.js?2.4.1"></script> <script src="/assets/moment/moment.min.js"></script> <script src="/assets/ant-design-vue/antd.min.js"></script> <script src="/assets/axios/axios.min.js?2.4.1"></script> <script src="/assets/qs/qs.min.js"></script> <script src="/assets/js/axios-init.js?2.4.1"></script> <script src="/assets/js/util/common.js?2.4.1"></script> <script src="/assets/js/util/date-util.js?2.4.1"></script> <script src="/assets/js/util/utils.js?2.4.1"></script> <script src="/assets/js/langs.js"></script> <script> const basePath = '\/'; axios.defaults.baseURL = basePath; </script> <script> function createThemeSwitcher() { const isDarkTheme = localStorage.getItem('dark-mode') === 'true'; const isUltra = localStorage.getItem('isUltraDarkThemeEnabled') === 'true'; if (isUltra) { document.documentElement.setAttribute('data-theme', 'ultra-dark'); } const theme = isDarkTheme ? 'dark' : 'light'; document.querySelector('body').setAttribute('class', theme); return { animationsOff() { document.documentElement.setAttribute('data-theme-animations', 'off'); const themeAnimations = document.querySelector('#change-theme'); themeAnimations.addEventListener('mouseleave', () => { document.documentElement.removeAttribute('data-theme-animations'); }); themeAnimations.addEventListener('touchend', () => { document.documentElement.removeAttribute('data-theme-animations'); }); }, animationsOffUltra() { document.documentElement.setAttribute('data-theme-animations', 'off'); const themeAnimationsUltra = document.querySelector('#change-theme-ultra'); themeAnimationsUltra.addEventListener('mouseleave', () => { document.documentElement.removeAttribute('data-theme-animations'); }); themeAnimationsUltra.addEventListener('touchend', () => { document.documentElement.removeAttribute('data-theme-animations'); }); }, isDarkTheme, isUltra, get currentTheme() { return this.isDarkTheme ? 'dark' : 'light'; }, toggleTheme() { this.isDarkTheme = !this.isDarkTheme; localStorage.setItem('dark-mode', this.isDarkTheme); document.querySelector('body').setAttribute('class', this.isDarkTheme ? 'dark' : 'light'); document.getElementById('message').className = themeSwitcher.currentTheme; }, toggleUltra() { this.isUltra = !this.isUltra; if (this.isUltra) { document.documentElement.setAttribute('data-theme', 'ultra-dark'); } else { document.documentElement.removeAttribute('data-theme'); } localStorage.setItem('isUltraDarkThemeEnabled', this.isUltra.toString()); } }; } const themeSwitcher = createThemeSwitcher(); Vue.component('theme-switch', { props: [], template: ` <template> <a-menu :theme="themeSwitcher.currentTheme" mode="inline" selected-keys=""> <a-sub-menu> <span slot="title"> <a-icon type="bulb" :theme="themeSwitcher.isDarkTheme ? 'filled' : 'outlined'"></a-icon> <span>Theme</span> </span> <a-menu-item id="change-theme" class="ant-menu-theme-switch" @mousedown="themeSwitcher.animationsOff()"> Dark <a-switch style="margin-left: 2px;" size="small" :default-checked="themeSwitcher.isDarkTheme" @change="themeSwitcher.toggleTheme()"></a-switch> </a-menu-item> <a-menu-item id="change-theme-ultra" v-if="themeSwitcher.isDarkTheme" class="ant-menu-theme-switch" @mousedown="themeSwitcher.animationsOffUltra()"> Ultra <a-checkbox style="margin-left: 2px;" :checked="themeSwitcher.isUltra" @click="themeSwitcher.toggleUltra()"></a-checkbox> </a-menu-item> </a-sub-menu> </a-menu> </template> `, data: () => ({ themeSwitcher }), mounted() { this.$message.config({ getContainer: () => document.getElementById('message') }); document.getElementById('message').className = themeSwitcher.currentTheme; } }); Vue.component('theme-switch-login', { props: [], template: ` <template> <a-menu @mousedown="themeSwitcher.animationsOff()" id="change-theme" :theme="themeSwitcher.currentTheme" mode="inline" selected-keys=""> <a-menu-item mode="inline" class="ant-menu-theme-switch"> <a-icon type="bulb" :theme="themeSwitcher.isDarkTheme ? 'filled' : 'outlined'"></a-icon> <a-switch size="small" :default-checked="themeSwitcher.isDarkTheme" @change="themeSwitcher.toggleTheme()"></a-switch> <template v-if="themeSwitcher.isDarkTheme"> <a-checkbox style="margin-left: 1rem; vertical-align: middle;" :checked="themeSwitcher.isUltra" @click="themeSwitcher.toggleUltra()">Ultra</a-checkbox> </template> </a-menu-item> </a-menu> </template> `, data: () => ({ themeSwitcher }), mounted() { this.$message.config({ getContainer: () => document.getElementById('message') }); document.getElementById('message').className = themeSwitcher.currentTheme; } }); </script> <script> Vue.component('password-input', { props: ["title", "value", "placeholder", "icon", "autocomplete", "name"], template: ` <template> <a-input :value="value" :type="showPassword ? 'text' : 'password'" :placeholder="placeholder" :autocomplete="autocomplete" :name="name" @input="$emit('input', $event.target.value)"> <template v-if="icon" #prefix> <a-icon :type="icon" style="font-size: 16px;" /> </template> <template #addonAfter> <a-icon :type="showPassword ? 'eye-invisible' : 'eye'" @click="toggleShowPassword" style="font-size: 16px;" /> </template> </a-input> </template> `, data() { return { showPassword: false, }; }, methods: { toggleShowPassword() { this.showPassword = !this.showPassword; }, }, }); </script> <script> class User { constructor() { this.username = ""; this.password = ""; } } const app = new Vue({ delimiters: ['[[', ']]'], el: '#app', data: { themeSwitcher, loading: false, user: new User(), secretEnable: false, lang: "" }, async created() { this.lang = getLang(); this.secretEnable = await this.getSecretStatus(); }, methods: { async login() { this.loading = true; const msg = await HttpUtil.post('/login', this.user); this.loading = false; if (msg.success) { location.href = basePath + 'panel/'; } }, async getSecretStatus() { this.loading = true; const msg = await HttpUtil.post('/getSecretStatus'); this.loading = false; if (msg.success) { this.secretEnable = msg.obj; return msg.obj; } }, }, }); document.addEventListener("DOMContentLoaded", function() { var animationDelay = 2000; initHeadline(); function initHeadline() { animateHeadline(document.querySelectorAll('.headline')); } function animateHeadline(headlines) { var duration = animationDelay; headlines.forEach(function(headline) { setTimeout(function() { hideWord(headline.querySelector('.is-visible')); }, duration); }); } function hideWord(word) { var nextWord = takeNext(word); switchWord(word, nextWord); setTimeout(function() { hideWord(nextWord); }, animationDelay); } function takeNext(word) { return (word.nextElementSibling) ? word.nextElementSibling : word.parentElement.firstElementChild; } function switchWord(oldWord, newWord) { oldWord.classList.remove('is-visible'); oldWord.classList.add('is-hidden'); newWord.classList.remove('is-hidden'); newWord.classList.add('is-visible'); } }); </script> </body></html>