154 lines
4.5 KiB
JavaScript
154 lines
4.5 KiB
JavaScript
// Popup Script
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
const statusEl = document.getElementById('status');
|
|
const taskCountEl = document.getElementById('taskCount');
|
|
const requestLogCountEl = document.getElementById('requestLogCount');
|
|
const logContentEl = document.getElementById('logContent');
|
|
|
|
let logs = [];
|
|
|
|
// 添加日志
|
|
function addLog(message, type = 'info') {
|
|
const now = new Date();
|
|
const timeStr = now.toLocaleTimeString('zh-CN', {
|
|
hour12: false,
|
|
hour: '2-digit',
|
|
minute: '2-digit',
|
|
second: '2-digit'
|
|
});
|
|
|
|
logs.push({
|
|
time: timeStr,
|
|
message: message,
|
|
type: type
|
|
});
|
|
|
|
// 限制日志数量
|
|
if (logs.length > 50) {
|
|
logs.shift();
|
|
}
|
|
|
|
renderLogs();
|
|
}
|
|
|
|
// 渲染日志
|
|
function renderLogs() {
|
|
if (logs.length === 0) {
|
|
logContentEl.innerHTML = '<div class="empty-log">暂无日志</div>';
|
|
return;
|
|
}
|
|
|
|
logContentEl.innerHTML = logs.map(log => `
|
|
<div class="log-entry">
|
|
<span class="log-time">[${log.time}]</span>
|
|
<span class="log-message">${log.message}</span>
|
|
</div>
|
|
`).join('');
|
|
|
|
logContentEl.scrollTop = logContentEl.scrollHeight;
|
|
}
|
|
|
|
// 更新状态
|
|
function updateStatus() {
|
|
chrome.runtime.sendMessage({ action: 'getStatus' }, response => {
|
|
if (response && response.success) {
|
|
const status = response.status;
|
|
statusEl.textContent = status.isProcessing ? '运行中' : '就绪';
|
|
statusEl.className = 'status-value ' + (status.isProcessing ? 'active' : 'inactive');
|
|
taskCountEl.textContent = status.taskCount;
|
|
requestLogCountEl.textContent = status.requestLogCount;
|
|
addLog('状态已更新');
|
|
} else {
|
|
addLog('获取状态失败', 'error');
|
|
}
|
|
});
|
|
}
|
|
|
|
// 刷新状态按钮
|
|
document.getElementById('refreshStatus').addEventListener('click', function() {
|
|
updateStatus();
|
|
});
|
|
|
|
// 获取 Cookies 按钮
|
|
document.getElementById('getCookies').addEventListener('click', function() {
|
|
chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
|
|
if (tabs[0]) {
|
|
chrome.runtime.sendMessage({
|
|
action: 'getCookies',
|
|
url: tabs[0].url
|
|
}, response => {
|
|
if (response && response.success) {
|
|
const cookieCount = response.cookies.length;
|
|
addLog(`获取到 ${cookieCount} 个 Cookie`);
|
|
console.log('Cookies:', response.cookies);
|
|
|
|
// 复制到剪贴板
|
|
const cookieText = JSON.stringify(response.cookies, null, 2);
|
|
navigator.clipboard.writeText(cookieText).then(() => {
|
|
addLog('Cookie 已复制到剪贴板');
|
|
}).catch(err => {
|
|
console.error('复制失败:', err);
|
|
});
|
|
} else {
|
|
addLog('获取 Cookie 失败', 'error');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
// 清除 Cookies 按钮
|
|
document.getElementById('clearCookies').addEventListener('click', function() {
|
|
if (confirm('确定要清除当前页面的所有 Cookies 吗?')) {
|
|
chrome.tabs.query({ active: true, currentWindow: true }, function(tabs) {
|
|
if (tabs[0]) {
|
|
chrome.runtime.sendMessage({
|
|
action: 'clearCookies',
|
|
url: tabs[0].url
|
|
}, response => {
|
|
if (response && response.success) {
|
|
addLog('Cookies 已清除');
|
|
} else {
|
|
addLog('清除 Cookies 失败', 'error');
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
// 查看日志按钮
|
|
document.getElementById('viewLogs').addEventListener('click', function() {
|
|
chrome.runtime.sendMessage({ action: 'getRequestLogs' }, response => {
|
|
if (response && response.success) {
|
|
const logCount = response.logs.length;
|
|
addLog(`获取到 ${logCount} 条请求日志`);
|
|
console.log('请求日志:', response.logs);
|
|
|
|
if (logCount > 0) {
|
|
// 显示最近 5 条
|
|
response.logs.slice(-5).forEach(log => {
|
|
addLog(`${log.method} ${log.url} - ${log.status}`);
|
|
});
|
|
}
|
|
} else {
|
|
addLog('获取请求日志失败', 'error');
|
|
}
|
|
});
|
|
});
|
|
|
|
// 清空日志按钮
|
|
document.getElementById('clearLog').addEventListener('click', function() {
|
|
logs = [];
|
|
renderLogs();
|
|
addLog('日志已清空');
|
|
});
|
|
|
|
// 初始化
|
|
addLog('扩展已就绪');
|
|
updateStatus();
|
|
|
|
// 定时更新状态
|
|
setInterval(updateStatus, 5000);
|
|
});
|