### 详细变更:
1. **文档与配置**:更新AGENTS.md添加命令超时约束,升级Rive依赖至0.14.7并替换平台插件引用
2. **UI优化**:重构AppInfo页面布局、移除图表冗余配置、锁定部分系统设置项
3. **功能增强**:
- 新增工具面板拖拽状态管理与介绍弹窗
- 新增进度页面编辑/重排/清空用户进度功能
- 新增摇一摇路由作用域拦截逻辑
4. **体验优化**:
- 统一外部链接跳转弹窗,添加文件打开确认逻辑
- 修复设备卡片IP溢出、Android权限声明问题
- 后台任务初始化增加协议校验
5. **代码重构**:拆分工具面板配置、拖拽逻辑与动画参数,优化状态管理代码
6. **工具脚本**:新增协议文件上传脚本
505 lines
21 KiB
HTML
505 lines
21 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>账号使用协议 - 闲言APP</title>
|
||
<style>
|
||
:root {
|
||
--primary: #6C5CE7;
|
||
--primary-light: #A29BFE;
|
||
--primary-dark: #5A4BD1;
|
||
--bg: #F2F2F7;
|
||
--bg-card: #FFFFFF;
|
||
--text: #1C1C1E;
|
||
--text-secondary: #8E8E93;
|
||
--text-tertiary: #AEAEB2;
|
||
--border: #E5E5EA;
|
||
--highlight-bg: rgba(108, 92, 231, 0.08);
|
||
--shadow-sm: 0 1px 3px rgba(0,0,0,0.04), 0 1px 2px rgba(0,0,0,0.06);
|
||
--shadow-md: 0 4px 12px rgba(0,0,0,0.08);
|
||
--radius-sm: 8px;
|
||
--radius-md: 12px;
|
||
--radius-lg: 16px;
|
||
--radius-xl: 20px;
|
||
--font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
||
}
|
||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||
body {
|
||
font-family: var(--font-family);
|
||
background: var(--bg);
|
||
color: var(--text);
|
||
line-height: 1.8;
|
||
-webkit-font-smoothing: antialiased;
|
||
}
|
||
.lang-switch {
|
||
position: fixed;
|
||
top: 16px;
|
||
right: 16px;
|
||
z-index: 100;
|
||
display: flex;
|
||
background: rgba(255,255,255,0.85);
|
||
backdrop-filter: blur(20px);
|
||
-webkit-backdrop-filter: blur(20px);
|
||
border-radius: 20px;
|
||
padding: 3px;
|
||
box-shadow: 0 2px 12px rgba(0,0,0,0.1);
|
||
border: 0.5px solid rgba(108, 92, 231, 0.15);
|
||
}
|
||
.lang-btn {
|
||
padding: 6px 14px;
|
||
border: none;
|
||
background: transparent;
|
||
color: var(--text-secondary);
|
||
font-size: 13px;
|
||
font-weight: 500;
|
||
cursor: pointer;
|
||
border-radius: 17px;
|
||
transition: all 0.25s ease;
|
||
font-family: var(--font-family);
|
||
}
|
||
.lang-btn.active {
|
||
background: var(--primary);
|
||
color: #FFF;
|
||
box-shadow: 0 2px 8px rgba(108, 92, 231, 0.3);
|
||
}
|
||
.lang-btn:hover:not(.active) {
|
||
background: rgba(108, 92, 231, 0.08);
|
||
color: var(--primary);
|
||
}
|
||
.header {
|
||
background: linear-gradient(135deg, #6C5CE7 0%, #5A4BD1 50%, #4A3DB5 100%);
|
||
padding: 48px 20px 44px;
|
||
text-align: center;
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
.header::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: -50%;
|
||
left: -50%;
|
||
width: 200%;
|
||
height: 200%;
|
||
background: radial-gradient(circle at 30% 50%, rgba(255,255,255,0.1) 0%, transparent 50%);
|
||
pointer-events: none;
|
||
}
|
||
.header::after {
|
||
content: '';
|
||
position: absolute;
|
||
bottom: 0;
|
||
left: 0;
|
||
right: 0;
|
||
height: 32px;
|
||
background: var(--bg);
|
||
border-radius: var(--radius-xl) var(--radius-xl) 0 0;
|
||
}
|
||
.header-icon { font-size: 40px; margin-bottom: 10px; display: block; }
|
||
.header h1 { color: #FFF; font-size: 24px; font-weight: 700; letter-spacing: -0.3px; margin-bottom: 4px; }
|
||
.header p { color: rgba(255,255,255,0.75); font-size: 14px; }
|
||
.container { max-width: 800px; margin: 0 auto; padding: 20px 16px 40px; }
|
||
.content-card {
|
||
background: var(--bg-card);
|
||
border-radius: var(--radius-lg);
|
||
padding: 28px 24px;
|
||
margin-bottom: 20px;
|
||
box-shadow: var(--shadow-sm);
|
||
}
|
||
h1 {
|
||
font-size: 22px;
|
||
font-weight: 700;
|
||
color: var(--text);
|
||
margin: 28px 0 12px;
|
||
}
|
||
h2 {
|
||
font-size: 20px;
|
||
font-weight: 700;
|
||
color: var(--text);
|
||
margin: 32px 0 16px;
|
||
padding-bottom: 10px;
|
||
border-bottom: 2px solid var(--primary);
|
||
display: inline-block;
|
||
}
|
||
h3 {
|
||
font-size: 17px;
|
||
font-weight: 600;
|
||
color: var(--text);
|
||
margin: 24px 0 12px;
|
||
}
|
||
p {
|
||
font-size: 15px;
|
||
color: var(--text);
|
||
margin-bottom: 12px;
|
||
line-height: 1.8;
|
||
}
|
||
p.note {
|
||
background: rgba(108, 92, 231, 0.06);
|
||
border-left: 3px solid var(--primary);
|
||
padding: 12px 16px;
|
||
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
|
||
margin: 12px 0;
|
||
}
|
||
.highlight {
|
||
color: var(--primary);
|
||
font-weight: 600;
|
||
background: var(--highlight-bg);
|
||
padding: 1px 6px;
|
||
border-radius: 4px;
|
||
}
|
||
.copyright-cert {
|
||
margin: 20px 0;
|
||
text-align: center;
|
||
padding: 20px;
|
||
background: rgba(108, 92, 231, 0.04);
|
||
border-radius: var(--radius-md);
|
||
border: 1px solid rgba(108, 92, 231, 0.12);
|
||
}
|
||
.cert-image {
|
||
max-width: 100%;
|
||
max-height: 500px;
|
||
border-radius: var(--radius-sm);
|
||
box-shadow: var(--shadow-md);
|
||
}
|
||
.cert-caption {
|
||
margin-top: 12px;
|
||
font-size: 14px;
|
||
color: var(--text-secondary);
|
||
font-weight: 500;
|
||
}
|
||
ul {
|
||
list-style: none;
|
||
padding: 0;
|
||
margin: 0 0 16px;
|
||
}
|
||
li {
|
||
font-size: 15px;
|
||
color: var(--text);
|
||
padding: 6px 0 6px 20px;
|
||
position: relative;
|
||
line-height: 1.7;
|
||
}
|
||
li::before {
|
||
content: '\2022';
|
||
color: var(--primary);
|
||
font-weight: 700;
|
||
position: absolute;
|
||
left: 4px;
|
||
top: 6px;
|
||
}
|
||
table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
margin: 16px 0;
|
||
font-size: 14px;
|
||
}
|
||
th {
|
||
background: var(--primary);
|
||
color: #FFF;
|
||
padding: 10px 12px;
|
||
text-align: left;
|
||
font-weight: 600;
|
||
font-size: 13px;
|
||
}
|
||
td {
|
||
padding: 10px 12px;
|
||
border-bottom: 0.5px solid var(--border);
|
||
line-height: 1.6;
|
||
}
|
||
tr:hover td {
|
||
background: rgba(108, 92, 231, 0.04);
|
||
}
|
||
.back-link {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 6px;
|
||
color: var(--primary);
|
||
text-decoration: none;
|
||
font-size: 15px;
|
||
font-weight: 500;
|
||
padding: 12px 0;
|
||
transition: opacity 0.2s;
|
||
}
|
||
.back-link:hover { opacity: 0.7; }
|
||
.footer {
|
||
text-align: center;
|
||
padding: 24px 20px 40px;
|
||
color: var(--text-secondary);
|
||
font-size: 13px;
|
||
line-height: 1.8;
|
||
border-top: 0.5px solid var(--border);
|
||
margin-top: 20px;
|
||
}
|
||
.footer .company { font-weight: 500; color: var(--text); margin-bottom: 4px; }
|
||
@media (max-width: 640px) {
|
||
.lang-switch { top: 10px; right: 10px; }
|
||
.lang-btn { padding: 5px 10px; font-size: 12px; }
|
||
.header { padding: 40px 16px 36px; }
|
||
.header h1 { font-size: 20px; }
|
||
.container { padding: 16px 12px 32px; }
|
||
.content-card { padding: 20px 16px; }
|
||
h2 { font-size: 18px; }
|
||
h3 { font-size: 16px; }
|
||
p, li { font-size: 14px; }
|
||
table { font-size: 12px; }
|
||
th, td { padding: 8px 6px; }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="lang-switch">
|
||
<button class="lang-btn active" onclick="switchLang('zh')" id="btn-zh">中文</button>
|
||
<button class="lang-btn" onclick="switchLang('en')" id="btn-en">EN</button>
|
||
</div>
|
||
|
||
<div class="header">
|
||
<span class="header-icon">👤</span>
|
||
<h1 id="header-title">账号使用协议</h1>
|
||
<p id="header-subtitle">账号注册、安全、注销等相关规定</p>
|
||
</div>
|
||
|
||
<div class="container">
|
||
<div class="content-card">
|
||
<div id="content-zh" class="lang-content">
|
||
<p><strong>闲言APP</strong> 账号使用协议</p>
|
||
<p>版本号:V6.5</p>
|
||
<p>更新日期:2026年5月20日</p>
|
||
<p>生效日期:2026年5月21日</p>
|
||
<p>本协议是您与<strong>弥勒市朋普镇微风暴网络科技工作室</strong>关于<strong>闲言APP</strong>账号注册、使用、安全及注销等事项的约定。请您仔细阅读并充分理解本协议。</p>
|
||
<h2>一、账号注册</h2>
|
||
<h3>1.1 注册资格</h3>
|
||
<ul>
|
||
<li>您须达到您所在地区法律规定的最低年龄要求方可注册**闲言APP**账号(中国大陆地区为<span class="highlight">14周岁</span>,欧盟地区为16周岁或所在成员国规定的较低年龄,美国为13周岁)</li>
|
||
<li><span class="highlight">14周岁以下</span>未成年人不得注册和使用**闲言APP**账号</li>
|
||
<li>如我们发现在未获监护人同意的情况下收集了未成年人信息,将立即删除相关信息</li>
|
||
<li>每位用户仅可注册<span class="highlight">一个账号</span>,不得买卖、转让、出借账号</li>
|
||
</ul>
|
||
<h3>1.2 注册方式</h3>
|
||
<ul>
|
||
<li>手机号注册:通过手机号接收验证码完成注册</li>
|
||
<li>邮箱注册:通过邮箱接收验证码完成注册</li>
|
||
<li>第三方登录:通过授权第三方账号快捷登录</li>
|
||
</ul>
|
||
<h3>1.3 注册信息</h3>
|
||
<p>您在注册时应提供<span class="highlight">真实、准确、完整</span>的信息,并在信息发生变更时及时更新。因注册信息不真实导致的问题和损失,由您自行承担。</p>
|
||
<h2>二、账号安全</h2>
|
||
<h3>2.1 密码安全</h3>
|
||
<ul>
|
||
<li>您应设置复杂度较高的密码,并定期更换</li>
|
||
<li>不得将密码告知他人</li>
|
||
<li>如发现账号被盗用,应<span class="highlight">立即通知</span>我们</li>
|
||
</ul>
|
||
<h3>2.2 安全措施</h3>
|
||
<ul>
|
||
<li>我们提供应用锁功能,您可开启以增强账号安全</li>
|
||
<li>我们提供密保问题功能,可用于密码找回</li>
|
||
<li>建议您开启登录验证等安全功能</li>
|
||
</ul>
|
||
<h3>2.3 安全义务</h3>
|
||
<ul>
|
||
<li>您应妥善保管账号和密码,因您的原因导致账号泄露的,由您<span class="highlight">自行承担损失</span></li>
|
||
<li>您不得将账号出借、出租、出售给他人使用</li>
|
||
<li>您应对账号下的<span class="highlight">所有行为负责</span></li>
|
||
</ul>
|
||
<h2>三、账号使用</h2>
|
||
<h3>3.1 实名认证</h3>
|
||
<p>根据《中华人民共和国网络安全法》等法律法规要求,您在使用部分功能时可能需要进行<span class="highlight">实名认证</span>。</p>
|
||
<h3>3.2 账号信息</h3>
|
||
<ul>
|
||
<li>您的昵称、头像、签名等信息不得违反法律法规和公序良俗</li>
|
||
<li>不得冒充他人或机构</li>
|
||
<li>不得使用涉及政治、色情、暴力等不当内容</li>
|
||
</ul>
|
||
<h3>3.3 账号限制</h3>
|
||
<p>以下情形我们有权限制您的账号使用:</p>
|
||
<ul>
|
||
<li>账号存在安全风险</li>
|
||
<li>违反用户服务协议</li>
|
||
<li>涉嫌违法违规活动</li>
|
||
<li>长期未登录(超过<span class="highlight">2年</span>)</li>
|
||
</ul>
|
||
<h2>四、账号注销</h2>
|
||
<h3>4.1 注销条件</h3>
|
||
<p>您有权随时申请注销账号,注销前请确保:</p>
|
||
<ul>
|
||
<li>账号无未处理的纠纷或投诉</li>
|
||
<li>账号无未完成的交易或服务</li>
|
||
<li>已备份需要保留的数据</li>
|
||
</ul>
|
||
<h3>4.2 注销流程</h3>
|
||
<ul>
|
||
<li>您可通过"设置 → 账户设置 → 注销账号"发起注销申请</li>
|
||
<li>第一步:阅读注销警告,确认了解注销后果</li>
|
||
<li>第二步:安全验证——需输入"DELETE"确认操作,并可填写注销原因(选填)</li>
|
||
<li>第三步:提交申请后进入<span class="highlight">3天审核期</span></li>
|
||
<li>第四步:管理员审核通过或审核期超时后,账号将被<span class="highlight">永久注销</span></li>
|
||
<li>审核期内您可随时取消注销申请,取消后账号恢复正常使用</li>
|
||
</ul>
|
||
<h3>4.3 注销状态查询</h3>
|
||
<ul>
|
||
<li>您可在注销页面查看当前申请状态(待审核/已通过/已拒绝/已撤销)</li>
|
||
<li>页面将显示申请时间、注销原因、预计自动注销时间等信息</li>
|
||
<li>审核期内页面将显示倒计时提示</li>
|
||
</ul>
|
||
<h3>4.4 注销后果</h3>
|
||
<ul>
|
||
<li>账号注销后,您将<span class="highlight">无法登录</span>和使用该账号</li>
|
||
<li>以下数据将被永久删除且<span class="highlight">不可恢复</span>:</li>
|
||
<li>所有收藏和笔记</li>
|
||
<li>签到记录和积分</li>
|
||
<li>个人资料和设置</li>
|
||
<li>文章和互动数据</li>
|
||
<li>会员权益、积分、金币等虚拟财产将清零且<span class="highlight">不可恢复</span></li>
|
||
<li>注销后<span class="highlight">无法恢复</span>,请谨慎操作</li>
|
||
</ul>
|
||
<h2>五、账号冻结与解冻</h2>
|
||
<h3>5.1 冻结情形</h3>
|
||
<p>以下情形我们有权冻结您的账号:</p>
|
||
<ul>
|
||
<li>收到司法机关协助冻结通知</li>
|
||
<li>账号涉嫌违法违规</li>
|
||
<li>账号存在严重安全风险</li>
|
||
<li>用户申请临时冻结</li>
|
||
</ul>
|
||
<h3>5.2 解冻流程</h3>
|
||
<ul>
|
||
<li>司法冻结:根据司法机关通知解冻</li>
|
||
<li>违规冻结:申诉通过后解冻</li>
|
||
<li>安全冻结:完成安全验证后解冻</li>
|
||
<li>临时冻结:到期自动解冻或申请解冻</li>
|
||
</ul>
|
||
<h2>六、数据与隐私</h2>
|
||
<h3>6.1 账号相关数据的收集、使用、存储请参阅《隐私政策》</h3>
|
||
<h3>6.2 您可通过"数据导出"功能导出您的个人数据</h3>
|
||
<h3>6.3 账号注销后,我们将依法<span class="highlight">删除或匿名化处理</span>您的个人信息</h3>
|
||
<h2>七、法律适用与争议解决</h2>
|
||
<h3>7.1 本协议适用<span class="highlight">中华人民共和国法律</span>。</h3>
|
||
<h3>7.2 因本协议产生的争议,双方应友好协商解决;协商不成的,任何一方均可向我们所在地有管辖权的<span class="highlight">人民法院</span>提起诉讼。</h3>
|
||
<h2>八、联系方式</h2>
|
||
<ul>
|
||
<li>邮箱:2821981550@qq.com</li>
|
||
<li>通信地址:云南省昆明市西山区滇池度假区(碧鸡街道车家壁513号)</li>
|
||
<li>开发者:**弥勒市朋普镇微风暴网络科技工作室**</li>
|
||
</ul>
|
||
<h2>九、法律适用与争议解决</h2>
|
||
<h3>9.1 本协议适用<span class="highlight">中华人民共和国法律</span>。</h3>
|
||
<h3>9.2 因本协议产生的争议,双方应友好协商解决;协商不成的,任何一方均可向我们所在地有管辖权的<span class="highlight">人民法院</span>提起诉讼。</h3>
|
||
<p>本协议中任何条款被认定为无效或不可执行的,不影响其他条款的效力。</p>
|
||
</div>
|
||
<div id="content-en" class="lang-content" style="display:none;">
|
||
<p><strong>Xianyan APP</strong> Account Usage Agreement</p>
|
||
<p>Version: V6.5</p>
|
||
<p>Updated: May 20, 2026</p>
|
||
<p>Effective: May 21, 2026</p>
|
||
<h2>I. Account Registration</h2>
|
||
<h3>1.1 You must be at least 14 years old to register an account</h3>
|
||
<h3>1.2 You need to provide a valid phone number or email for registration</h3>
|
||
<h3>1.3 The information you provide must be true, accurate, and complete</h3>
|
||
<h3>1.4 Each person may only register one account</h3>
|
||
<h2>II. Account Security</h2>
|
||
<h3>2.1 You are responsible for keeping your account password secure</h3>
|
||
<h3>2.2 Do not use easily guessable passwords</h3>
|
||
<h3>2.3 If you discover your account has been used without authorization, please contact us immediately</h3>
|
||
<h3>2.4 We are not responsible for losses caused by your failure to keep your account secure</h3>
|
||
<h2>III. Account Usage</h2>
|
||
<h3>3.1 You may not lend, transfer, or sell your account</h3>
|
||
<h3>3.2 You may not use your account for illegal activities</h3>
|
||
<h3>3.3 You may not use technical means to obtain other users' account information</h3>
|
||
<h2>IV. Account Deletion</h2>
|
||
<h3>4.1 You can apply for account deletion at: My → Settings → Account Settings → Delete Account</h3>
|
||
<h3>4.2 Deletion process:</h3>
|
||
<ul>
|
||
<li>Submit a deletion request and undergo security verification</li>
|
||
<li>3-day review period (countdown displayed)</li>
|
||
<li>During the review period, you can cancel the deletion request</li>
|
||
<li>After the review is complete, the account and related data will be permanently deleted</li>
|
||
</ul>
|
||
<h3>4.3 After account deletion:</h3>
|
||
<ul>
|
||
<li>All personal information will be deleted or anonymized</li>
|
||
<li>Published content will be handled according to your choice</li>
|
||
<li>Account cannot be recovered after deletion</li>
|
||
</ul>
|
||
<h2>V. Account Freeze</h2>
|
||
<h3>5.1 We have the right to freeze accounts in the following circumstances:</h3>
|
||
<ul>
|
||
<li>Violation of laws and regulations</li>
|
||
<li>Violation of this Agreement</li>
|
||
<li>Receipt of legitimate complaints from multiple users</li>
|
||
<li>Suspected fraudulent or illegal activities</li>
|
||
</ul>
|
||
<h2>VI. Contact Information</h2>
|
||
<ul>
|
||
<li>Email: 2821981550@qq.com</li>
|
||
<li>Mailing address: Dianchi Resort Area, Xishan District, Kunming, Yunnan Province, China (Bijie Subdistrict, Chejiabi No. 513)</li>
|
||
<li>Developer: **Mile City Pengpu Town Weifengbao Network Technology Studio**</li>
|
||
</ul>
|
||
<h2>VII. Legal Application and Dispute Resolution</h2>
|
||
<h3>7.1 This Agreement is governed by the laws of the People's Republic of China.</h3>
|
||
<h3>7.2 Disputes shall be resolved through friendly negotiation; if negotiation fails, either party may file a lawsuit with the People's Court having jurisdiction over our location.</h3>
|
||
<p>If any provision of this agreement is found to be invalid or unenforceable, the validity of the remaining provisions shall not be affected.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<a href="index.html" class="back-link" id="back-link">← 返回协议列表</a>
|
||
</div>
|
||
|
||
<div class="footer" id="footer">
|
||
<div class="company" id="footer-company">弥勒市朋普镇微风暴网络科技工作室</div>
|
||
<div id="footer-contact">📧 2821981550@qq.com | 📧 2572560133@qq.com | 📍 云南省昆明市西山区滇池度假区(碧鸡街道车家壁513号)</div>
|
||
<div style="margin-top: 8px;" id="footer-credit">统一社会信用代码:92532526MA6PCX153W</div>
|
||
<div style="margin-top: 4px;" id="footer-icp">滇ICP备2022000863号-18A</div>
|
||
<div style="margin-top: 4px; color: var(--text-tertiary);">© 2026 Xianyan. All rights reserved.</div>
|
||
</div>
|
||
|
||
<script>
|
||
const DATA = {
|
||
zh: {
|
||
title: '账号使用协议',
|
||
subtitle: '账号注册、安全、注销等相关规定',
|
||
backLink: '← 返回协议列表',
|
||
company: '弥勒市朋普镇微风暴网络科技工作室',
|
||
contact: '📧 2821981550@qq.com | 📧 2572560133@qq.com | 📍 云南省昆明市西山区滇池度假区(碧鸡街道车家壁513号)',
|
||
credit: '统一社会信用代码:92532526MA6PCX153W',
|
||
icp: '滇ICP备2022000863号-18A'
|
||
},
|
||
en: {
|
||
title: 'Account Agreement',
|
||
subtitle: 'Rules for account registration, security, and deletion',
|
||
backLink: '← Back to Agreement List',
|
||
company: 'Mile City Pengpu Town Weifengbao Network Technology Studio',
|
||
contact: '📧 2821981550@qq.com | 📧 2572560133@qq.com | 📍 Dianchi Resort, Xishan District, Kunming, Yunnan, China',
|
||
credit: 'Unified Social Credit Code: 92532526MA6PCX153W',
|
||
icp: 'ICP License: 滇ICP备2022000863号-18A'
|
||
}
|
||
};
|
||
|
||
function switchLang(lang) {
|
||
document.getElementById('content-zh').style.display = lang === 'zh' ? 'block' : 'none';
|
||
document.getElementById('content-en').style.display = lang === 'en' ? 'block' : 'none';
|
||
document.getElementById('header-title').textContent = DATA[lang].title;
|
||
document.getElementById('header-subtitle').textContent = DATA[lang].subtitle;
|
||
document.getElementById('back-link').textContent = DATA[lang].backLink;
|
||
document.getElementById('footer-company').textContent = DATA[lang].company;
|
||
document.getElementById('footer-contact').innerHTML = DATA[lang].contact;
|
||
document.getElementById('footer-credit').textContent = DATA[lang].credit;
|
||
document.getElementById('footer-icp').textContent = DATA[lang].icp;
|
||
document.getElementById('btn-zh').className = 'lang-btn' + (lang === 'zh' ? ' active' : '');
|
||
document.getElementById('btn-en').className = 'lang-btn' + (lang === 'en' ? ' active' : '');
|
||
document.documentElement.lang = lang === 'zh' ? 'zh-CN' : 'en';
|
||
const url = new URL(window.location);
|
||
if (lang === 'en') {
|
||
url.searchParams.set('lang', 'en');
|
||
} else {
|
||
url.searchParams.delete('lang');
|
||
}
|
||
history.replaceState(null, '', url);
|
||
}
|
||
|
||
(function() {
|
||
const params = new URLSearchParams(window.location.search);
|
||
const lang = params.get('lang');
|
||
if (lang === 'en') switchLang('en');
|
||
})();
|
||
</script>
|
||
</body>
|
||
</html> |