<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>热点新闻分析</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js" integrity="sha512-BNaRQnYJYiPSqHHDb58B0yaPfCu+Wgds8Gp/gU33kqBtgNS4tSPHuGibyoeqMV/TJlSKda6FXzoEyYGjTe+vXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<style>
* { box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
margin: 0;
padding: 16px;
background: #fafafa;
color: #333;
line-height: 1.5;
}
.container {
max-width: 600px;
margin: 0 auto;
background: white;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 2px 16px rgba(0,0,0,0.06);
}
.header {
background: linear-gradient(135deg, #7a72ff 0%, #3aafed 100%);
color: #fff;
padding: 32px 24px;
text-align: center;
position: relative;
}
.save-buttons {
position: absolute;
top: 16px;
right: 16px;
display: flex;
gap: 8px;
}
.save-btn {
background: rgba(255, 255, 255, 0.2);
border: 1px solid rgba(255, 255, 255, 0.3);
color: white;
padding: 8px 16px;
border-radius: 6px;
cursor: pointer;
font-size: 13px;
font-weight: 500;
transition: all 0.2s ease;
backdrop-filter: blur(10px);
white-space: nowrap;
}
.save-btn:hover {
background: rgba(255, 255, 255, 0.3);
border-color: rgba(255, 255, 255, 0.5);
transform: translateY(-1px);
}
.save-btn:active {
transform: translateY(0);
}
.save-btn:disabled {
opacity: 0.6;
cursor: not-allowed;
}
.header-title {
font-size: 22px;
font-weight: 700;
margin: 0 0 20px 0;
}
.header-info {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
font-size: 14px;
opacity: 0.95;
}
.info-item {
text-align: center;
}
.info-label {
display: block;
font-size: 12px;
opacity: 0.8;
margin-bottom: 4px;
}
.info-value {
font-weight: 600;
font-size: 16px;
}
.content {
padding: 24px;
}
.word-group {
margin-bottom: 40px;
}
.word-group:first-child {
margin-top: 0;
}
.word-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
padding-bottom: 8px;
border-bottom: 1px solid #f0f0f0;
}
.word-info {
display: flex;
align-items: center;
gap: 12px;
}
.word-name {
font-size: 17px;
font-weight: 600;
color: #1a1a1a;
}
.word-count {
color: #666;
font-size: 13px;
font-weight: 500;
}
.word-count.hot { color: #dc2626; font-weight: 600; }
.word-count.warm { color: #ea580c; font-weight: 600; }
.word-index {
color: #999;
font-size: 12px;
}
.news-item {
margin-bottom: 20px;
padding: 16px 0;
border-bottom: 1px solid #f5f5f5;
position: relative;
display: flex;
gap: 12px;
align-items: center;
}
.news-item:last-child {
border-bottom: none;
}
.news-item.new::after {
content: "NEW";
position: absolute;
top: 12px;
right: 0;
background: #fbbf24;
color: #92400e;
font-size: 9px;
font-weight: 700;
padding: 3px 6px;
border-radius: 4px;
letter-spacing: 0.5px;
}
.news-number {
color: #999;
font-size: 13px;
font-weight: 600;
min-width: 20px;
text-align: center;
flex-shrink: 0;
background: #f8f9fa;
border-radius: 50%;
width: 24px;
height: 24px;
display: flex;
align-items: center;
justify-content: center;
align-self: flex-start;
margin-top: 8px;
}
.news-content {
flex: 1;
min-width: 0;
padding-right: 40px;
}
.news-item.new .news-content {
padding-right: 50px;
}
.news-header {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 8px;
flex-wrap: wrap;
}
.source-name {
color: #666;
font-size: 12px;
font-weight: 500;
}
.rank-num {
color: #fff;
background: #6b7280;
font-size: 10px;
font-weight: 700;
padding: 2px 6px;
border-radius: 10px;
min-width: 18px;
text-align: center;
}
.rank-num.top { background: #dc2626; }
.rank-num.high { background: #ea580c; }
.time-info {
color: #999;
font-size: 11px;
}
.count-info {
color: #059669;
font-size: 11px;
font-weight: 500;
}
.news-title {
font-size: 15px;
line-height: 1.4;
color: #1a1a1a;
margin: 0;
}
.news-link {
color: #2563eb;
text-decoration: none;
}
.news-link:hover {
text-decoration: underline;
}
.news-link:visited {
color: #7c3aed;
}
.topic-trend-section {
margin-top: 40px;
padding-top: 24px;
border-top: 2px solid #f0f0f0;
}
.topic-trend-title {
color: #1a1a1a;
font-size: 16px;
font-weight: 600;
margin: 0 0 20px 0;
}
.viral-topic-item {
padding: 16px 0;
border-bottom: 1px solid #f5f5f5;
}
.viral-topic-item:last-child {
border-bottom: none;
}
.viral-topic-header {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 12px;
}
.viral-topic-keyword {
font-size: 16px;
font-weight: 600;
}
.topic-item {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid #f9f9f9;
}
.topic-item:last-child {
border-bottom: none;
}
.viral-topic-stats {
font-size: 12px;
color: #666;
}
.viral-topic-stats .new { color: #dc2626; font-weight: bold; }
.viral-topic-stats .up { color: #f59e0b; font-weight: bold; }
.viral-topic-stats .level-high { color: #dc2626; font-weight: bold; }
.viral-topic-stats .level-mid { color: #f59e0b; font-weight: bold; }
.viral-sample-titles {
list-style: none;
padding-left: 16px;
margin: 0;
font-size: 13px;
}
.viral-sample-titles li {
color: #666;
padding: 4px 0;
position: relative;
}
.viral-sample-titles li::before { content: '▪'; position: absolute; left: -14px; color: #ccc; }
.new-section {
margin-top: 40px;
padding-top: 24px;
border-top: 2px solid #f0f0f0;
}
.new-section-title {
color: #1a1a1a;
font-size: 16px;
font-weight: 600;
margin: 0 0 20px 0;
}
.new-source-group {
margin-bottom: 24px;
}
.new-source-title {
color: #666;
font-size: 13px;
font-weight: 500;
margin: 0 0 12px 0;
padding-bottom: 6px;
border-bottom: 1px solid #f5f5f5;
}
.new-item {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid #f9f9f9;
}
.new-item:last-child {
border-bottom: none;
}
.new-item-number {
color: #999;
font-size: 12px;
font-weight: 600;
min-width: 18px;
text-align: center;
flex-shrink: 0;
background: #f8f9fa;
border-radius: 50%;
width: 20px;
height: 20px;
display: flex;
align-items: center;
justify-content: center;
}
.new-item-rank {
color: #fff;
background: #6b7280;
font-size: 10px;
font-weight: 700;
padding: 3px 6px;
border-radius: 8px;
min-width: 20px;
text-align: center;
flex-shrink: 0;
}
.new-item-rank.top { background: #dc2626; }
.new-item-rank.high { background: #ea580c; }
.new-item-content {
flex: 1;
min-width: 0;
}
.new-item-title {
font-size: 14px;
line-height: 1.4;
color: #1a1a1a;
margin: 0;
}
.error-section {
background: #fef2f2;
border: 1px solid #fecaca;
border-radius: 8px;
padding: 16px;
margin-bottom: 24px;
}
.error-title {
color: #dc2626;
font-size: 14px;
font-weight: 600;
margin: 0 0 8px 0;
}
.error-list {
list-style: none;
padding: 0;
margin: 0;
}
.error-item {
color: #991b1b;
font-size: 13px;
padding: 2px 0;
font-family: 'SF Mono', Consolas, monospace;
}
.footer {
margin-top: 32px;
padding: 20px 24px;
background: #f8f9fa;
border-top: 1px solid #e5e7eb;
text-align: center;
}
.footer-content {
font-size: 13px;
color: #6b7280;
line-height: 1.6;
}
.footer-link {
color: #4f46e5;
text-decoration: none;
font-weight: 500;
transition: color 0.2s ease;
}
.footer-link:hover {
color: #7c3aed;
text-decoration: underline;
}
.project-name {
font-weight: 600;
color: #374151;
}
@media (max-width: 480px) {
body { padding: 12px; }
.header { padding: 24px 20px; }
.content { padding: 20px; }
.footer { padding: 16px 20px; }
.header-info { grid-template-columns: 1fr; gap: 12px; }
.news-header { gap: 6px; }
.news-content { padding-right: 45px; }
.news-item { gap: 8px; }
.new-item { gap: 8px; }
.news-number { width: 20px; height: 20px; font-size: 12px; }
.save-buttons {
position: static;
margin-bottom: 16px;
display: flex;
gap: 8px;
justify-content: center;
flex-direction: column;
width: 100%;
}
.save-btn {
width: 100%;
}
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<div class="save-buttons">
<button class="save-btn" onclick="saveAsImage()">保存为图片</button>
<button class="save-btn" onclick="saveAsMultipleImages()">分段保存</button>
</div>
<div class="header-title">热点新闻分析</div>
<div class="header-info">
<div class="info-item">
<span class="info-label">报告类型</span>
<span class="info-value">实时分析</span>
</div>
<div class="info-item">
<span class="info-label">新闻总数</span>
<span class="info-value">255 条</span>
</div>
<div class="info-item">
<span class="info-label">热点新闻</span>
<span class="info-value">12 条</span>
</div>
<div class="info-item">
<span class="info-label">生成时间</span>
<span class="info-value">02-02 02:28</span>
</div>
</div>
</div>
<div class="content">
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">股票 A股 上证 深证</div>
<div class="word-count ">4 条</div>
</div>
<div class="word-index">1/6</div>
</div>
<div class="news-item new">
<div class="news-number">1</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">财联社热门</span><span class="rank-num high">5</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2276870" target="_blank" class="news-link">海外市场持续动荡,A股如何应对?十大券商策略来了</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">2</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">财联社热门</span><span class="rank-num ">8</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2276583" target="_blank" class="news-link">拟整合6000亿元金矿的黄金股月内股价涨超70% 1月披露并购重组进展的A股名单一览</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">3</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">财联社热门</span><span class="rank-num ">9</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2276497" target="_blank" class="news-link">应声20CM涨停!A股年报行情纵深推进,11家上市公司净利最高同比预增超10倍</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">4</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">财联社热门</span><span class="rank-num ">10</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2276515" target="_blank" class="news-link">龙头五连板 本周披露并购重组进展的A股名单一览</a>
</div>
</div>
</div>
</div>
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">特斯拉 马斯克</div>
<div class="word-count ">3 条</div>
</div>
<div class="word-index">2/6</div>
</div>
<div class="news-item new">
<div class="news-number">1</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">贴吧</span><span class="rank-num top">2</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://tieba.baidu.com/hottopic/browse/hottopic?topic_id=28350003&amp;topic_name=%E8%90%9D%E8%8E%89%E5%B2%9B%E5%85%BD%E8%A1%8C%E6%9B%9D%E5%85%89%2C%E9%A9%AC%E6%96%AF%E5%85%8B%E6%80%A5%E6%92%87%E6%B8%85" target="_blank" class="news-link">萝莉岛兽行曝光,马斯克急撇清</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">2</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">华尔街见闻</span><span class="rank-num ">9</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://wallstreetcn.com/articles/3764683" target="_blank" class="news-link">Space X投资人:今年的IPO将是“史上最大的造富事件”,马斯克仍被低估,火箭运力过剩催生太空数据中心</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">3</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">今日头条</span><span class="rank-num ">21</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://www.toutiao.com/trending/7601314667331846194/" target="_blank" class="news-link">马斯克回应曾试图前往爱泼斯坦小岛</a>
</div>
</div>
</div>
</div>
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">ai 人工智能</div>
<div class="word-count ">2 条</div>
</div>
<div class="word-index">3/6</div>
</div>
<div class="news-item new">
<div class="news-number">1</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">华尔街见闻</span><span class="rank-num top">3</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://wallstreetcn.com/articles/3764675" target="_blank" class="news-link">微信群、朋友圈重现红包雨 腾讯元宝10亿红包「AI入口战」正式开打</a>
</div>
</div>
</div>
<div class="news-item new">
<div class="news-number">2</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">财联社热门</span><span class="rank-num high">4</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2276797" target="_blank" class="news-link">元宝登顶App Store免费榜!10亿红包驱动“社交裂变” 大厂争抢AI超级入口</a>
</div>
</div>
</div>
</div>
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">英伟达 NVIDIA 黄仁勋</div>
<div class="word-count ">1 条</div>
</div>
<div class="word-index">4/6</div>
</div>
<div class="news-item new">
<div class="news-number">1</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">华尔街见闻</span><span class="rank-num ">10</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://wallstreetcn.com/articles/3764694" target="_blank" class="news-link">黄仁勋澄清:对OpenAI的千亿投资"从未承诺",英伟达将逐步评估</a>
</div>
</div>
</div>
</div>
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">AMD</div>
<div class="word-count ">1 条</div>
</div>
<div class="word-index">5/6</div>
</div>
<div class="news-item new">
<div class="news-number">1</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">华尔街见闻</span><span class="rank-num ">6</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://wallstreetcn.com/articles/3764656" target="_blank" class="news-link">下周重磅日程:美非农、欧英央行决议、日本大选、伊朗局势、谷歌亚马逊AMD财报</a>
</div>
</div>
</div>
</div>
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">谐波器 机器人</div>
<div class="word-count ">1 条</div>
</div>
<div class="word-index">6/6</div>
</div>
<div class="news-item new">
<div class="news-number">1</div>
<div class="news-content">
<div class="news-header">
<span class="source-name">百度热搜</span><span class="rank-num ">24</span><span class="time-info">02时28分</span>
</div>
<div class="news-title"><a href="https://www.baidu.com/s?wd=%E4%BD%95%E5%B0%8F%E9%B9%8F%E5%9B%9E%E5%BA%94IRON%E6%9C%BA%E5%99%A8%E4%BA%BA%E8%B5%B0%E7%8C%AB%E6%AD%A5%E6%97%B6%E6%91%94%E5%80%92" target="_blank" class="news-link">何小鹏回应IRON机器人走猫步时摔倒</a>
</div>
</div>
</div>
</div>
<div class="topic-trend-section">
<div class="topic-trend-title">🔥 异常热度话题</div>
<div class="viral-topic-item">
<div class="viral-topic-header">
<div class="viral-topic-keyword">SpaceX申请部署100万颗卫星</div>
<div class="viral-topic-stats">
5条提及 · <span class="new">新话题</span> · <span class="level-high">高热度</span>
</div>
</div>
<ul class="viral-sample-titles"><li>SpaceX申请部署100万颗卫星,打造太空数据中心</li><li>马斯克也转了!SpaceX申请部署100万颗卫星</li><li>SpaceX申请部署100万颗卫星!欲构建轨道数据中心网络蓝图</li></ul></div>
<div class="viral-topic-item">
<div class="viral-topic-header">
<div class="viral-topic-keyword">背后</div>
<div class="viral-topic-stats">
3条提及 · <span class="up">↑3%</span> · <span class="level-mid">中热度</span>
</div>
</div>
<ul class="viral-sample-titles"><li>内存条变身“电子黄金”背后</li><li>四川泸州“花坛埋尸案”背后</li><li>黄金白银遭遇史诗级跳水 背后“推手”究竟是谁?</li></ul></div>
<div class="viral-topic-item">
<div class="viral-topic-header">
<div class="viral-topic-keyword">名侦探柯南</div>
<div class="viral-topic-stats">
3条提及 · <span class="up">↑3%</span> · <span class="level-mid">中热度</span>
</div>
</div>
<ul class="viral-sample-titles"><li>《名侦探柯南》与辱华漫画联动引争议</li><li>名侦探柯南 联动</li><li>名侦探柯南</li></ul></div></div>
<div class="topic-trend-section">
<div class="topic-trend-title">✨ 关注话题趋势</div>
<div class="word-group">
<div class="word-header">
<div class="word-info">
<div class="word-name">AMD</div>
<div class="word-count">1 条提及 <span style="color: #dc2626;">(↑0.00%)</span></div>
</div>
</div>
<div class="news-item">
<div class="news-content" style="padding-right: 0;">
<img src="data:image/png;base64,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" alt="AMD 趋势图" style="width: 100%; height: auto;" />
</div>
</div>
</div></div>
</div>
<div class="footer">
<div class="footer-content">
</div>
</div>
</div>
<script>
async function saveAsImage() {
const button = event.target;
const originalText = button.textContent;
try {
button.textContent = '生成中...';
button.disabled = true;
window.scrollTo(0, 0);
// 等待页面稳定
await new Promise(resolve => setTimeout(resolve, 200));
// 截图前隐藏按钮
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'hidden';
// 再次等待确保按钮完全隐藏
await new Promise(resolve => setTimeout(resolve, 100));
const container = document.querySelector('.container');
const canvas = await html2canvas(container, {
backgroundColor: '#ffffff',
scale: 1.5,
useCORS: true,
allowTaint: false,
imageTimeout: 10000,
removeContainer: false,
foreignObjectRendering: false,
logging: false,
width: container.offsetWidth,
height: container.offsetHeight,
x: 0,
y: 0,
scrollX: 0,
scrollY: 0,
windowWidth: window.innerWidth,
windowHeight: window.innerHeight
});
buttons.style.visibility = 'visible';
const link = document.createElement('a');
const now = new Date();
const filename = `TrendRadar_热点新闻分析_${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}_${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}.png`;
link.download = filename;
link.href = canvas.toDataURL('image/png', 1.0);
// 触发下载
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
button.textContent = '保存成功!';
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
} catch (error) {
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'visible';
button.textContent = '保存失败';
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
}
}
async function saveAsMultipleImages() {
const button = event.target;
const originalText = button.textContent;
const container = document.querySelector('.container');
const scale = 1.5;
const maxHeight = 5000 / scale;
try {
button.textContent = '分析中...';
button.disabled = true;
// 获取所有可能的分割元素
const newsItems = Array.from(container.querySelectorAll('.news-item'));
const wordGroups = Array.from(container.querySelectorAll('.word-group'));
const newSection = container.querySelector('.new-section');
const errorSection = container.querySelector('.error-section');
const header = container.querySelector('.header');
const footer = container.querySelector('.footer');
// 计算元素位置和高度
const containerRect = container.getBoundingClientRect();
const elements = [];
// 添加header作为必须包含的元素
elements.push({
type: 'header',
element: header,
top: 0,
bottom: header.offsetHeight,
height: header.offsetHeight
});
// 添加错误信息(如果存在)
if (errorSection) {
const rect = errorSection.getBoundingClientRect();
elements.push({
type: 'error',
element: errorSection,
top: rect.top - containerRect.top,
bottom: rect.bottom - containerRect.top,
height: rect.height
});
}
// 按word-group分组处理news-item
wordGroups.forEach(group => {
const groupRect = group.getBoundingClientRect();
const groupNewsItems = group.querySelectorAll('.news-item');
// 添加word-group的header部分
const wordHeader = group.querySelector('.word-header');
if (wordHeader) {
const headerRect = wordHeader.getBoundingClientRect();
elements.push({
type: 'word-header',
element: wordHeader,
parent: group,
top: groupRect.top - containerRect.top,
bottom: headerRect.bottom - containerRect.top,
height: headerRect.height
});
}
// 添加每个news-item
groupNewsItems.forEach(item => {
const rect = item.getBoundingClientRect();
elements.push({
type: 'news-item',
element: item,
parent: group,
top: rect.top - containerRect.top,
bottom: rect.bottom - containerRect.top,
height: rect.height
});
});
});
// 添加新增新闻部分
if (newSection) {
const rect = newSection.getBoundingClientRect();
elements.push({
type: 'new-section',
element: newSection,
top: rect.top - containerRect.top,
bottom: rect.bottom - containerRect.top,
height: rect.height
});
}
// 添加footer
const footerRect = footer.getBoundingClientRect();
elements.push({
type: 'footer',
element: footer,
top: footerRect.top - containerRect.top,
bottom: footerRect.bottom - containerRect.top,
height: footer.offsetHeight
});
// 计算分割点
const segments = [];
let currentSegment = { start: 0, end: 0, height: 0, includeHeader: true };
let headerHeight = header.offsetHeight;
currentSegment.height = headerHeight;
for (let i = 1; i < elements.length; i++) {
const element = elements[i];
const potentialHeight = element.bottom - currentSegment.start;
// 检查是否需要创建新分段
if (potentialHeight > maxHeight && currentSegment.height > headerHeight) {
// 在前一个元素结束处分割
currentSegment.end = elements[i - 1].bottom;
segments.push(currentSegment);
// 开始新分段
currentSegment = {
start: currentSegment.end,
end: 0,
height: element.bottom - currentSegment.end,
includeHeader: false
};
} else {
currentSegment.height = potentialHeight;
currentSegment.end = element.bottom;
}
}
// 添加最后一个分段
if (currentSegment.height > 0) {
currentSegment.end = container.offsetHeight;
segments.push(currentSegment);
}
button.textContent = `生成中 (0/${segments.length})...`;
// 隐藏保存按钮
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'hidden';
// 为每个分段生成图片
const images = [];
for (let i = 0; i < segments.length; i++) {
const segment = segments[i];
button.textContent = `生成中 (${i + 1}/${segments.length})...`;
// 创建临时容器用于截图
const tempContainer = document.createElement('div');
tempContainer.style.cssText = `
position: absolute;
left: -9999px;
top: 0;
width: ${container.offsetWidth}px;
background: white;
`;
tempContainer.className = 'container';
// 克隆容器内容
const clonedContainer = container.cloneNode(true);
// 移除克隆内容中的保存按钮
const clonedButtons = clonedContainer.querySelector('.save-buttons');
if (clonedButtons) {
clonedButtons.style.display = 'none';
}
tempContainer.appendChild(clonedContainer);
document.body.appendChild(tempContainer);
// 等待DOM更新
await new Promise(resolve => setTimeout(resolve, 100));
// 使用html2canvas截取特定区域
const canvas = await html2canvas(clonedContainer, {
backgroundColor: '#ffffff',
scale: scale,
useCORS: true,
allowTaint: false,
imageTimeout: 10000,
logging: false,
width: container.offsetWidth,
height: segment.end - segment.start,
x: 0,
y: segment.start,
windowWidth: window.innerWidth,
windowHeight: window.innerHeight
});
images.push(canvas.toDataURL('image/png', 1.0));
// 清理临时容器
document.body.removeChild(tempContainer);
}
// 恢复按钮显示
buttons.style.visibility = 'visible';
// 下载所有图片
const now = new Date();
const baseFilename = `TrendRadar_热点新闻分析_${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}_${String(now.getHours()).padStart(2, '0')}${String(now.getMinutes()).padStart(2, '0')}`;
for (let i = 0; i < images.length; i++) {
const link = document.createElement('a');
link.download = `${baseFilename}_part${i + 1}.png`;
link.href = images[i];
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
// 延迟一下避免浏览器阻止多个下载
await new Promise(resolve => setTimeout(resolve, 100));
}
button.textContent = `已保存 ${segments.length} 张图片!`;
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
} catch (error) {
console.error('分段保存失败:', error);
const buttons = document.querySelector('.save-buttons');
buttons.style.visibility = 'visible';
button.textContent = '保存失败';
setTimeout(() => {
button.textContent = originalText;
button.disabled = false;
}, 2000);
}
}
document.addEventListener('DOMContentLoaded', function() {
window.scrollTo(0, 0);
});
</script>
</body>
</html>