平台特色
- 一体化在线工具集合(30+种工具)
- 智能浏览器(多标签页、书签管理)
- 会员等级体系与权限控制(11级体系)
- AI智能助手(基于GPT-3.5,会员专属)
- 应用商店(用户共享,严格审核)
- 资源中心(海量学习资源)
- 响应式设计,多端完美适配
- 个性化仪表盘(可拖拽布局)
技术架构
前端技术:
- HTML5 + CSS3 + JavaScript ES6+
- Font Awesome 6.4.0 图标库
- Chart.js 数据可视化
- Monaco Editor 代码编辑器
- 响应式设计,支持PWA
后端技术:
- Supabase (PostgreSQL + 实时数据库)
- Row Level Security 行级安全
- 用户认证和授权系统
- 文件存储和CDN加速
部署环境:
- Netlify / Vercel 部署
- GitHub Actions 自动化部署
- HTTPS 安全加密
安全声明
本平台采用最先进的安全认证授权机制,所有用户数据均加密存储。
我们承诺保护用户隐私,不会泄露任何个人信息。所有数据传输都通过
HTTPS 加密,确保通信安全。
版本: 2.0.0
最后更新: 2024年12月5日
2024 智能导航中心 版权所有
this.transactions = [
{ id: 1, type: 'income', amount: 299, description: '钻石会员订阅', date: '2024-01-15', category: 'subscription' },
{ id: 2, type: 'expense', amount: 1500, description: '服务器费用', date: '2024-01-10', category: 'infrastructure' },
{ id: 3, type: 'income', amount: 129, description: '黄金会员订阅', date: '2024-01-12', category: 'subscription' }
];
this.invoices = [
{ id: 'INV-2024-001', client: '企业客户A', amount: 5000, status: 'paid', dueDate: '2024-02-01' },
{ id: 'INV-2024-002', client: '企业客户B', amount: 3000, status: 'pending', dueDate: '2024-02-15' }
];
this.budgets = [
{ category: 'development', allocated: 20000, spent: 15000 },
{ category: 'marketing', allocated: 10000, spent: 7500 },
{ category: 'infrastructure', allocated: 5000, spent: 3000 }
];
}
// 获取财务概览
getFinancialOverview() {
const income = this.transactions
.filter(t => t.type === 'income')
.reduce((sum, t) => sum + t.amount, 0);
const expenses = this.transactions
.filter(t => t.type === 'expense')
.reduce((sum, t) => sum + t.amount, 0);
const netIncome = income - expenses;
return {
income,
expenses,
netIncome,
profitMargin: income > 0 ? ((netIncome / income) * 100).toFixed(1) : 0
};
}
// 添加交易
addTransaction(transaction) {
const newTransaction = {
id: this.transactions.length + 1,
...transaction,
date: new Date().toISOString().split('T')[0]
};
this.transactions.push(newTransaction);
return newTransaction;
}
// 获取预算使用情况
getBudgetUsage() {
return this.budgets.map(budget => ({
...budget,
remaining: budget.allocated - budget.spent,
usagePercentage: (budget.spent / budget.allocated) * 100
}));
}
// 生成财务报表
generateFinancialReport(period = 'monthly') {
const overview = this.getFinancialOverview();
const budgetUsage = this.getBudgetUsage();
const pendingInvoices = this.invoices.filter(i => i.status === 'pending');
return {
period,
generatedAt: new Date().toISOString(),
overview,
budgetUsage,
pendingInvoices,
recommendations: this.generateRecommendations(overview, budgetUsage)
};
}
generateRecommendations(overview, budgetUsage) {
const recommendations = [];
if (overview.netIncome < 0) {
recommendations.push('考虑优化成本结构或增加收入来源');
}
budgetUsage.forEach(budget => {
if (budget.usagePercentage > 90) {
recommendations.push(`${budget.category}预算即将用完,考虑调整或追加预算`);
}
});
return recommendations;
}
}
const financialManager = new FinancialManagementSystem();
// 客户关系管理系统
class CustomerRelationshipManager {
constructor() {
this.customers = [];
this.leads = [];
this.supportTickets = [];
this.initializeSampleData();
}
initializeSampleData() {
this.customers = [
{
id: 1,
name: '张三科技有限公司',
email: 'zhang@tech.com',
phone: '13800138000',
industry: '科技',
status: 'active',
membershipLevel: 5,
joinDate: '2023-12-01',
lastContact: '2024-01-15'
},
{
id: 2,
name: '李四设计工作室',
email: 'li@design.com',
phone: '13900139000',
industry: '设计',
status: 'active',
membershipLevel: 3,
joinDate: '2024-01-05',
lastContact: '2024-01-18'
}
];
this.leads = [
{
id: 1,
name: '王五教育机构',
email: 'wang@edu.com',
phone: '13700137000',
source: '官网咨询',
status: 'contacted',
interestLevel: 'high'
}
];
this.supportTickets = [
{
id: 1,
customerId: 1,
subject: 'API使用问题',
description: '调用API时遇到认证错误',
status: 'resolved',
priority: 'high',
createdAt: '2024-01-16'
}
];
}
// 获取客户统计
getCustomerStats() {
const totalCustomers = this.customers.length;
const activeCustomers = this.customers.filter(c => c.status === 'active').length;
const premiumCustomers = this.customers.filter(c => c.membershipLevel >= 3).length;
return {
totalCustomers,
activeCustomers,
premiumCustomers,
premiumRate: totalCustomers > 0 ? ((premiumCustomers / totalCustomers) * 100).toFixed(1) : 0,
activeLeads: this.leads.length,
openTickets: this.supportTickets.filter(t => t.status !== 'resolved').length
};
}
// 添加新客户
addCustomer(customerData) {
const customer = {
id: this.customers.length + 1,
...customerData,
joinDate: new Date().toISOString().split('T')[0],
status: 'active'
};
this.customers.push(customer);
return customer;
}
// 创建支持工单
createSupportTicket(ticketData) {
const ticket = {
id: this.supportTickets.length + 1,
...ticketData,
createdAt: new Date().toISOString().split('T')[0],
status: 'open'
};
this.supportTickets.push(ticket);
return ticket;
}
// 获取客户满意度分析
getCustomerSatisfaction() {
const resolvedTickets = this.supportTickets.filter(t => t.status === 'resolved');
const totalResponseTime = resolvedTickets.reduce((sum, ticket) => {
// 模拟响应时间分析
return sum + Math.random() * 24; // 小时
}, 0);
const avgResponseTime = resolvedTickets.length > 0 ? totalResponseTime / resolvedTickets.length : 0;
return {
totalTickets: this.supportTickets.length,
resolvedTickets: resolvedTickets.length,
resolutionRate: this.supportTickets.length > 0 ?
(resolvedTickets.length / this.supportTickets.length * 100).toFixed(1) : 0,
avgResponseTime: avgResponseTime.toFixed(1),
satisfactionScore: this.calculateSatisfactionScore()
};
}
calculateSatisfactionScore() {
// 模拟满意度计算
const baseScore = 85;
const resolutionBonus = this.supportTickets.filter(t => t.status === 'resolved').length * 0.5;
const responsePenalty = Math.random() * 10;
return Math.min(100, Math.max(60, baseScore + resolutionBonus - responsePenalty));
}
}
initializeSampleData() {
this.campaigns = [
{
id: 1,
name: '新年促销活动',
type: 'promotion',
status: 'active',
startDate: '2024-01-01',
endDate: '2024-01-31',
targetAudience: 'all_users',
budget: 5000,
metrics: {
impressions: 15000,
clicks: 1200,
conversions: 85,
roi: 3.2
}
}
];
this.emailTemplates = [
{
id: 1,
name: '欢迎邮件',
subject: '欢迎加入智能导航中心!',
content: '感谢您注册智能导航中心...',
type: 'welcome'
},
{
id: 2,
name: '促销通知',
subject: '新年特惠:会员8折优惠',
content: '亲爱的用户,新年快乐!...',
type: 'promotion'
}
];
}
// 创建营销活动
createCampaign(campaignData) {
const campaign = {
id: this.campaigns.length + 1,
...campaignData,
metrics: {
impressions: 0,
clicks: 0,
conversions: 0,
roi: 0
}
};
this.campaigns.push(campaign);
return campaign;
}
// 获取营销效果分析
getMarketingAnalytics() {
const totalImpressions = this.campaigns.reduce((sum, c) => sum + c.metrics.impressions, 0);
const totalClicks = this.campaigns.reduce((sum, c) => sum + c.metrics.clicks, 0);
const totalConversions = this.campaigns.reduce((sum, c) => sum + c.metrics.conversions, 0);
const totalBudget = this.campaigns.reduce((sum, c) => sum + c.budget, 0);
return {
totalCampaigns: this.campaigns.length,
activeCampaigns: this.campaigns.filter(c => c.status === 'active').length,
totalImpressions,
totalClicks,
totalConversions,
clickThroughRate: totalImpressions > 0 ? (totalClicks / totalImpressions * 100).toFixed(2) : 0,
conversionRate: totalClicks > 0 ? (totalConversions / totalClicks * 100).toFixed(2) : 0,
totalBudget,
averageROI: this.campaigns.length > 0 ?
this.campaigns.reduce((sum, c) => sum + c.metrics.roi, 0) / this.campaigns.length : 0
};
}
// 发送营销邮件
sendMarketingEmail(templateId, recipients, customData = {}) {
const template = this.emailTemplates.find(t => t.id === templateId);
if (!template) {
throw new Error('邮件模板不存在');
}
// 模拟邮件发送
const email = {
id: 'email_' + Date.now(),
templateId,
recipients,
subject: this.customizeTemplate(template.subject, customData),
content: this.customizeTemplate(template.content, customData),
sentAt: new Date(),
status: 'sent'
};
return email;
}
// 模板定制
customizeTemplate(template, data) {
return template.replace(/\{\{([^}]+)\}\}/g, (match, key) => {
return data[key.trim()] || match;
});
}
// 获取营销建议
getMarketingRecommendations() {
const analytics = this.getMarketingAnalytics();
const recommendations = [];
if (analytics.clickThroughRate < 2) {
recommendations.push('点击率较低,建议优化广告创意和目标受众定位');
}
if (analytics.conversionRate < 5) {
recommendations.push('转化率有待提升,考虑优化落地页和用户引导流程');
}
if (analytics.averageROI < 2) {
recommendations.push('投资回报率偏低,建议调整营销预算分配');
}
return recommendations;
}
}
window.marketingTools = new MarketingAutomationTools();
新标签页
`;
tabsContainer.appendChild(newTab);
// 初始化标签页状态
browserState.tabs[tabId] = {
url: 'about:blank',
title: '新标签页',
history: [],
historyIndex: -1
};
// 激活新标签页
switchTab(tabId);
showToast('新标签页已创建', 'success');
}
// 创建新标签页
function createNewTab() {
const tabId = 'tab_' + Date.now();
const tabsContainer = document.getElementById('browserTabs');
// 创建新标签页元素
const newTab = document.createElement('div');
newTab.className = 'browser-tab';
newTab.setAttribute('data-tab-id', tabId);
newTab.innerHTML = `
新标签页
`;
// 设置初始样式和动画
newTab.style.opacity = '0';
newTab.style.transform = 'scale(0.8)';
newTab.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
tabsContainer.appendChild(newTab);
// 触发动画
setTimeout(() => {
newTab.style.opacity = '1';
newTab.style.transform = 'scale(1)';
}, 10);
// 初始化标签页状态
browserState.tabs[tabId] = {
url: 'about:blank',
title: '新标签页',
history: [],
historyIndex: -1
};
// 激活新标签页
switchTab(tabId);
showToast('新标签页已创建', 'success');
logUserActivity('创建新标签页', { tabId: tabId });
}
// 关闭标签页
function closeTab(element) {
const tab = element.closest('.browser-tab');
const tabId = tab.getAttribute('data-tab-id');
const tabsContainer = document.getElementById('browserTabs');
if (tabsContainer.children.length <= 1) {
showToast('不能关闭最后一个标签页', 'warning');
return;
}
const isActive = tab.classList.contains('active');
// 添加关闭动画
tab.style.opacity = '0';
tab.style.transform = 'scale(0.8)';
tab.style.transition = 'opacity 0.3s ease, transform 0.3s ease';
setTimeout(() => {
tab.remove();
// 删除标签页状态
delete browserState.tabs[tabId];
// 如果关闭的是当前激活的标签,激活前一个标签
if (isActive) {
const remainingTabs = tabsContainer.querySelectorAll('.browser-tab');
if (remainingTabs.length > 0) {
const lastTab = remainingTabs[remainingTabs.length - 1];
switchTab(lastTab.getAttribute('data-tab-id'));
}
}
showToast('标签页已关闭', 'info');
}, 300);
logUserActivity('关闭标签页', { tabId: tabId });
}
}
// 切换标签页
function switchTab(tabId) {
// 更新标签页状态
const tabs = document.querySelectorAll('.browser-tab');
const currentActiveTab = document.querySelector('.browser-tab.active');
// 添加淡出动画到当前激活标签
if (currentActiveTab) {
currentActiveTab.style.opacity = '0.5';
currentActiveTab.style.transition = 'opacity 0.2s ease';
}
tabs.forEach(tab => {
tab.classList.remove('active');
});
const activeTab = document.querySelector(`[data-tab-id="${tabId}"]`);
if (activeTab) {
activeTab.classList.add('active');
// 添加淡入动画到新激活标签
activeTab.style.opacity = '1';
activeTab.style.transform = 'scale(1.05)';
activeTab.style.transition = 'opacity 0.2s ease, transform 0.2s ease';
setTimeout(() => {
activeTab.style.transform = 'scale(1)';
}, 200);
}
// 更新浏览器状态
browserState.activeTab = tabId;
const tabState = browserState.tabs[tabId];
// 更新地址栏
document.getElementById('browserUrl').value = tabState.url;
// 加载标签页内容
loadUrl(tabState.url);
logUserActivity('切换标签页', { tabId: tabId });
}
// 导航到指定URL
function navigate() {
const urlInput = document.getElementById('browserUrl');
let url = urlInput.value.trim();
if (!url) {
showToast('请输入网址', 'warning');
return;
}
// 处理URL格式
if (!url.startsWith('http://') && !url.startsWith('https://')) {
if (url.includes('.') && !url.includes(' ')) {
url = 'https://' + url;
} else {
// 作为搜索处理
url = 'https://www.baidu.com/s?wd=' + encodeURIComponent(url);
}
}
loadUrl(url);
}
// 加载URL
function loadUrl(url) {
const iframe = document.getElementById('browserIframe');
const loading = document.getElementById('iframeLoading');
// 显示加载状态
loading.classList.add('show');
iframe.classList.add('loading');
updateBrowserStatus('正在加载: ' + url);
// 更新当前标签页状态
const tabId = browserState.activeTab;
const tabState = browserState.tabs[tabId];
// 添加到历史记录
if (tabState.url !== url) {
tabState.history = tabState.history.slice(0, tabState.historyIndex + 1);
tabState.history.push(url);
tabState.historyIndex = tabState.history.length - 1;
}
tabState.url = url;
// 更新标签页标题
const activeTab = document.querySelector(`[data-tab-id="${tabId}"]`);
if (activeTab) {
const titleElement = activeTab.querySelector('.tab-title');
titleElement.textContent = '加载中...';
}
// 设置超时机制,确保加载状态最终会被隐藏
const loadTimeout = setTimeout(() => {
if (loading.classList.contains('show')) {
loading.classList.remove('show');
loading.classList.add('hide');
iframe.classList.remove('loading');
setTimeout(() => {
loading.style.display = 'none';
loading.classList.remove('hide');
}, 300);
updateBrowserStatus('页面加载超时');
showToast('页面加载超时,请检查网络连接', 'warning');
}
}, 10000); // 10秒超时
// 保存超时ID以便清理
tabState.loadTimeout = loadTimeout;
// 加载URL
iframe.src = url;
// 添加到全局历史记录
addToHistory(url);
}
// 处理回车键导航
function handleUrlEnter(event) {
if (event.key === 'Enter') {
navigate();
}
}
// iframe加载完成
window.iframeLoaded = function iframeLoaded() {
const iframe = document.getElementById('browserIframe');
const loading = document.getElementById('iframeLoading');
const tabId = browserState.activeTab;
const tabState = browserState.tabs[tabId];
// 清理超时定时器
if (tabState.loadTimeout) {
clearTimeout(tabState.loadTimeout);
delete tabState.loadTimeout;
}
// 隐藏加载状态(使用动画效果)
loading.classList.remove('show');
loading.classList.add('hide');
iframe.classList.remove('loading');
setTimeout(() => {
loading.style.display = 'none';
loading.classList.remove('hide');
}, 300);
try {
// 尝试获取页面标题
const doc = iframe.contentDocument || iframe.contentWindow.document;
const title = doc.title || '未知页面';
// 更新标签页标题
tabState.title = title;
const activeTab = document.querySelector(`[data-tab-id="${tabId}"]`);
if (activeTab) {
const titleElement = activeTab.querySelector('.tab-title');
titleElement.textContent = title;
// 更新favicon
const faviconElement = activeTab.querySelector('.tab-favicon');
const favicon = doc.querySelector('link[rel*="icon"]');
if (favicon) {
faviconElement.innerHTML = `

`;
} else {
faviconElement.innerHTML = '
';
}
}
updateBrowserStatus('页面加载完成: ' + title);
showToast('页面加载完成', 'success');
} catch (error) {
// 跨域限制,无法获取页面信息
tabState.title = '外部页面';
updateBrowserStatus('页面加载完成');
showToast('页面加载完成(受跨域限制)', 'info');
}
}
// 浏览器后退
function browserBack() {
const tabId = browserState.activeTab;
const tabState = browserState.tabs[tabId];
if (tabState.historyIndex > 0) {
tabState.historyIndex--;
const previousUrl = tabState.history[tabState.historyIndex];
loadUrl(previousUrl);
} else {
showToast('没有更多历史记录', 'info');
}
}
// 浏览器前进
function browserForward() {
const tabId = browserState.activeTab;
const tabState = browserState.tabs[tabId];
if (tabState.historyIndex < tabState.history.length - 1) {
tabState.historyIndex++;
const nextUrl = tabState.history[tabState.historyIndex];
loadUrl(nextUrl);
} else {
showToast('没有更多历史记录', 'info');
}
}
// 刷新页面
function refreshBrowser() {
const tabId = browserState.activeTab;
const tabState = browserState.tabs[tabId];
loadUrl(tabState.url);
}
// 回到主页
function browserHome() {
loadHomePage();
}
// 加载主页
function loadHomePage() {
const homeUrl = 'https://www.baidu.com';
document.getElementById('browserUrl').value = homeUrl;
loadUrl(homeUrl);
}
// 浏览器性能优化
// 错误处理增强
function handleBrowserError(error) {
console.error('浏览器错误:', error);
const errorMessages = {
'net::ERR_NAME_NOT_RESOLVED': '无法解析域名,请检查网络连接',
'net::ERR_CONNECTION_REFUSED': '连接被拒绝,服务器可能已关闭',
'net::ERR_CONNECTION_TIMED_OUT': '连接超时,请检查网络连接',
'net::ERR_CERT_COMMON_NAME_INVALID': '证书错误,网站可能不安全'
};
const message = errorMessages[error.message] || '页面加载失败,请重试';
showToast(message, 'error');
updateBrowserStatus('加载失败: ' + message);
}
// 键盘快捷键支持
document.addEventListener('keydown', function(event) {
// Ctrl+T: 新建标签页
if (event.ctrlKey && event.key === 't') {
event.preventDefault();
createNewTab();
}
// Ctrl+W: 关闭当前标签页
if (event.ctrlKey && event.key === 'w') {
event.preventDefault();
const activeTab = document.querySelector('.browser-tab.active');
if (activeTab) {
closeTab(activeTab.querySelector('.tab-close'));
}
}
// F5: 刷新页面
if (event.key === 'F5') {
event.preventDefault();
refreshBrowser();
}
// Alt+Home: 回到主页
if (event.altKey && event.key === 'Home') {
event.preventDefault();
browserHome();
}
});
// 浏览器性能优化
function optimizeBrowserPerformance() {
// 清理内存泄漏
const iframe = document.getElementById('browserIframe');
if (iframe) {
// 重置iframe以释放内存
iframe.src = 'about:blank';
}
// 清理过期的定时器
for (const tabId in browserState.tabs) {
const tabState = browserState.tabs[tabId];
if (tabState.loadTimeout) {
clearTimeout(tabState.loadTimeout);
delete tabState.loadTimeout;
}
}
// 强制垃圾回收(如果浏览器支持)
if (window.gc) {
window.gc();
}
showToast('浏览器性能已优化', 'success');
}
// 错误处理增强
function handleBrowserError(error) {
console.error('浏览器错误:', error);
const errorMessages = {
'net::ERR_NAME_NOT_RESOLVED': '无法解析域名,请检查网络连接',
'net::ERR_CONNECTION_REFUSED': '连接被拒绝,服务器可能已关闭',
'net::ERR_CONNECTION_TIMED_OUT': '连接超时,请检查网络连接',
'net::ERR_CERT_COMMON_NAME_INVALID': '证书错误,网站可能不安全'
};
const message = errorMessages[error.message] || '页面加载失败,请重试';
showToast(message, 'error');
updateBrowserStatus('加载失败: ' + message);
}
// 键盘快捷键支持
document.addEventListener('keydown', function(event) {
// Ctrl+T: 新建标签页
if (event.ctrlKey && event.key === 't') {
event.preventDefault();
createNewTab();
}
// Ctrl+W: 关闭当前标签页
if (event.ctrlKey && event.key === 'w') {
event.preventDefault();
const activeTab = document.querySelector('.browser-tab.active');
if (activeTab) {
closeTab(activeTab.querySelector('.tab-close'));
}
}
// F5: 刷新页面
if (event.key === 'F5') {
event.preventDefault();
refreshBrowser();
}
// Alt+Home: 回到主页
if (event.altKey && event.key === 'Home') {
event.preventDefault();
browserHome();
}
});
// 切换书签侧边栏
function toggleBookmarks() {
const sidebar = document.getElementById('browserSidebar');
if (sidebar.style.display === 'none') {
sidebar.style.display = 'flex';
updateBrowserStatus('书签侧边栏已打开');
} else {
sidebar.style.display = 'none';
updateBrowserStatus('书签侧边栏已关闭');
}
}
// 加载书签
function loadBookmark(url) {
document.getElementById('browserUrl').value = url;
loadUrl(url);
// 自动关闭侧边栏
document.getElementById('browserSidebar').style.display = 'none';
}
// 下载当前页面
function downloadPage() {
const tabId = browserState.activeTab;
const tabState = browserState.tabs[tabId];
const link = document.createElement('a');
link.href = tabState.url;
link.download = tabState.title + '.html';
link.click();
showToast('页面下载链接已创建', 'success');
}
// 添加到历史记录
function addToHistory(url) {
const historyItem = {
url: url,
title: '正在加载...',
timestamp: new Date().toLocaleString(),
visitCount: 1
};
// 检查是否已存在
const existingIndex = browserState.history.findIndex(item => item.url === url);
if (existingIndex !== -1) {
browserState.history[existingIndex].visitCount++;
browserState.history[existingIndex].timestamp = historyItem.timestamp;
} else {
browserState.history.unshift(historyItem);
// 限制历史记录数量
if (browserState.history.length > 100) {
browserState.history.pop();
}
}
updateHistoryDisplay();
}
// 更新历史记录显示
function updateHistoryDisplay() {
const historyList = document.getElementById('historyList');
historyList.innerHTML = browserState.history.map(item => `
${item.title}
${item.url}
${item.timestamp}
`).join('');
}
// 更新浏览器状态
function updateBrowserStatus(message) {
const statusElement = document.getElementById('browserStatus');
if (statusElement) {
statusElement.textContent = message;
// 添加临时高亮效果
statusElement.style.color = '#10B981';
setTimeout(() => {
statusElement.style.color = '';
}, 2000);
}
}
// 浏览器初始化增强 - initBrowser函数已在前方定义
// 初始化侧边栏 - 已在前方定义,避免重复
// 页面加载完成后初始化浏览器
// 注意:initBrowser() 已经在页面加载时调用,避免重复初始化
// 添加性能监控
monitorPerformance();
// 添加页面卸载时的清理
window.addEventListener('beforeunload', function() {
optimizeBrowserPerformance();
});
// 性能监控
function monitorPerformance() {
// 监控页面加载时间
const navigationStart = performance.timing.navigationStart;
const loadTime = performance.now();
console.log(`页面加载时间: ${loadTime.toFixed(2)}ms`);
// 监控内存使用
if (performance.memory) {
const usedMB = performance.memory.usedJSHeapSize / 1048576;
const totalMB = performance.memory.totalJSHeapSize / 1048576;
console.log(`内存使用: ${usedMB.toFixed(2)}MB / ${totalMB.toFixed(2)}MB`);
// 如果内存使用过高,自动优化
if (usedMB > totalMB * 0.8) {
console.warn('内存使用过高,自动优化性能');
optimizeBrowserPerformance();
}
}
}
// 添加浏览器离线支持
window.addEventListener('online', function() {
showToast('网络连接已恢复', 'success');
updateBrowserStatus('网络连接正常');
});
window.addEventListener('offline', function() {
showToast('网络连接已断开', 'warning');
updateBrowserStatus('网络连接断开');
});