<!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">179 条</span>
</div>
<div class="info-item">
<span class="info-label">热点新闻</span>
<span class="info-value">8 条</span>
</div>
<div class="info-item">
<span class="info-label">生成时间</span>
<span class="info-value">02-06 20:48</span>
</div>
</div>
</div>
<div class="content">
<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">1/5</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">20时48分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2282686" 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 ">15</span><span class="time-info">20时48分</span>
</div>
<div class="news-title"><a href="https://www.zhihu.com/question/2002682591564752872" target="_blank" class="news-link">段永平称投资特斯拉基本看的是「市梦率」,完全靠蒙,如何评价他的观点?</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 ">16</span><span class="time-info">20时48分</span>
</div>
<div class="news-title"><a href="https://www.toutiao.com/trending/7603048029708746771/" 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">2/5</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">20时48分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2282814" target="_blank" class="news-link">微信连环封禁千问、元宝红包口令 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 ">8</span><span class="time-info">20时48分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2282989" target="_blank" class="news-link">一图看懂:美股“AI烧钱”大战今年继续打响</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">3/5</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 ">7</span><span class="time-info">20时48分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2282722" target="_blank" class="news-link">CPU告急!英特尔、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">4/5</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">20时48分</span>
</div>
<div class="news-title"><a href="https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%9C%A8%E7%B1%B3%E5%85%B0%E5%86%AC%E5%A5%A5%E4%BC%9A%E5%A4%A7%E7%A7%80%E5%8A%9F%E5%A4%AB" 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">股票 A股 上证 深证</div>
<div class="word-count ">1 条</div>
</div>
<div class="word-index">5/5</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">20时48分</span>
</div>
<div class="news-title"><a href="https://www.cls.cn/detail/2283033" target="_blank" class="news-link">节前最后一周!A股能否迎“红包行情”,近10年数据这样说</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">媒体</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>一图看懂:美股“AI烧钱”大战今年继续打响</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">10 条提及 <span style="color: #dc2626;">(↑200.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>