你吼呀喵~ (*´▽`)ノ 这里是南鸢晨星的用户页呀喵~
这里为什么这么乱呢喵?
嗯嗯,作为一只运维小猫娘喵~
肯定需要测试一堆bug哒喵!!
还有很多奇奇怪怪的xss注入,样式丢失什么什么的喵…
内容页面数 207 (在主命名空间、不是重定向页、至少包含一个内部链接)
总页面数 7,725
总文件数 6,247
用户总数 1,538
活跃用户数量 48
全站编辑次数 59,202
管理员数量 36
<script>alert('xss')</script>
<script>alert('xss2')</script>
20 35 41
缓存测试
黑色深蓝深绿深青深红深紫金色灰色深灰蓝色绿色青色红色粉色黄色白色
淡金浅灰浅灰2深棕暗红棕橙金黄亮绿青绿深蓝2紫色
粗体文本 斜体文本 下划线文本 删除线文本
红色粗体 绿色斜体 青色粗斜体
组合所有样式
黑色深蓝绿色青色红色粉色黄色白色
粗体斜体
第一行
第二行
第三行
主大厅-0 ≫ [PE][Lv.1]Test: 文本
主大厅-0 ≫ [PE][Lv.4]Test: 文本
主大厅-0 ≫ [PE][Lv.9]Test: 文本
主大厅-0 ≫ [PE][Lv.14]Test: 文本
主大厅-0 ≫ [PE][Lv.19]Test: 文本
主大厅-0 ≫ [PE][Lv.24]Test: 文本
主大厅-0 ≫ [PE][Lv.29]Test: 文本
主大厅-0 ≫ [PE][Lv.44]Test: 文本
主大厅-0 ≫ [PE][Lv.59]Test: 文本
主大厅-0 ≫ [PE][Lv.79]Test: 文本
主大厅-0 ≫ [PE][Lv.99]Test: 文本
主大厅-0 ≫ [PE][Lv.100]Test: 文本
喵呜~
测试1111
图片格式转换器 & 水印工具
<svg width="300" height="200" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>干净 SVG 测试文件</title>
<desc>不含恶意代码,用于对比测试</desc>
<defs>
<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#667eea;stop-opacity:1" />
<stop offset="100%" style="stop-color:#764ba2;stop-opacity:1" />
</linearGradient>
</defs>
<rect x="0" y="0" width="300" height="200" fill="url(#grad1)" rx="10"/>
<circle cx="80" cy="100" r="40" fill="#ff6b6b" opacity="0.8"/>
<circle cx="150" cy="100" r="40" fill="#feca57" opacity="0.8"/>
<circle cx="220" cy="100" r="40" fill="#48dbfb" opacity="0.8"/>
<text x="150" y="170" text-anchor="middle" font-size="20" fill="white" font-family="Arial, sans-serif" font-weight="bold">
干净 SVG 测试
</text>
<a xlink:href="https://wiki.easecation.net" target="_blank">
<rect x="100" y="20" width="100" height="30" fill="white" opacity="0.3" rx="5"/>
<text x="150" y="40" text-anchor="middle" font-size="12" fill="white">安全链接</text>
</a>
</svg>
123你好
msgtest
test11
';
} else {
let currentIndex = 0;
let autoPlayTimer = null;
// 生成幻灯片 DOM
config.slides.forEach((slide, index) => {
const slideDiv = document.createElement('div');
slideDiv.className = 'slide';
const img = document.createElement('img');
img.src = slide.image || '';
img.alt = slide.title || '轮播图';
img.style.objectFit = config.objectFit;
if (slide.link) {
const link = document.createElement('a');
link.href = slide.link;
link.className = 'slide-link';
link.target = '_blank';
link.appendChild(img);
if (config.showCaptions && (slide.title || slide.description)) {
const caption = document.createElement('div');
caption.className = 'slide-caption';
if (slide.title) {
const h2 = document.createElement('h2');
h2.textContent = slide.title;
caption.appendChild(h2);
}
if (slide.description) {
const p = document.createElement('p');
p.textContent = slide.description;
caption.appendChild(p);
}
link.appendChild(caption);
}
slideDiv.appendChild(link);
} else {
slideDiv.appendChild(img);
if (config.showCaptions && (slide.title || slide.description)) {
const caption = document.createElement('div');
caption.className = 'slide-caption';
if (slide.title) {
const h2 = document.createElement('h2');
h2.textContent = slide.title;
caption.appendChild(h2);
}
if (slide.description) {
const p = document.createElement('p');
p.textContent = slide.description;
caption.appendChild(p);
}
slideDiv.appendChild(caption);
}
}
track.appendChild(slideDiv);
});
// 生成指示点
if (config.showIndicators) {
config.slides.forEach((_, index) => {
const dot = document.createElement('button');
dot.className = 'indicator' + (index === 0 ? ' active' : '');
dot.setAttribute('aria-label', `切换到第 ${index + 1} 张`);
dot.addEventListener('click', () => {
goToSlide(index);
resetAutoPlay();
});
indicatorsContainer.appendChild(dot);
});
}
function goToSlide(index) {
if (config.loop) {
if (index < 0) {
index = totalSlides - 1;
} else if (index >= totalSlides) {
index = 0;
}
} else {
if (index < 0) index = 0;
if (index >= totalSlides) index = totalSlides - 1;
prevBtn.disabled = index === 0;
nextBtn.disabled = index === totalSlides - 1;
}
currentIndex = index;
track.style.transform = `translateX(-${currentIndex * 100}%)`;
const dots = indicatorsContainer.querySelectorAll('.indicator');
dots.forEach((dot, i) => {
dot.classList.toggle('active', i === currentIndex);
});
}
function nextSlide() {
goToSlide(currentIndex + 1);
}
function prevSlide() {
goToSlide(currentIndex - 1);
}
function startAutoPlay() {
if (!config.autoplay || totalSlides <= 1) return;
if (autoPlayTimer) clearInterval(autoPlayTimer);
autoPlayTimer = setInterval(nextSlide, config.interval);
}
function stopAutoPlay() {
if (autoPlayTimer) {
clearInterval(autoPlayTimer);
autoPlayTimer = null;
}
}
function resetAutoPlay() {
stopAutoPlay();
startAutoPlay();
}
nextBtn.addEventListener('click', () => {
nextSlide();
resetAutoPlay();
});
prevBtn.addEventListener('click', () => {
prevSlide();
resetAutoPlay();
});
container.addEventListener('mouseenter', stopAutoPlay);
container.addEventListener('mouseleave', startAutoPlay);
document.addEventListener('keydown', (e) => {
if (e.key === 'ArrowLeft') {
prevSlide();
resetAutoPlay();
} else if (e.key === 'ArrowRight') {
nextSlide();
resetAutoPlay();
}
});
let touchStartX = 0;
let touchEndX = 0;
container.addEventListener('touchstart', (e) => {
touchStartX = e.changedTouches[0].screenX;
stopAutoPlay();
}, { passive: true });
container.addEventListener('touchend', (e) => {
touchEndX = e.changedTouches[0].screenX;
const diff = touchStartX - touchEndX;
if (Math.abs(diff) > 50) {
if (diff > 0) {
nextSlide();
} else {
prevSlide();
}
resetAutoPlay();
} else {
startAutoPlay();
}
}, { passive: true });
// 初始化
goToSlide(0);
if (config.loop === false) {
prevBtn.disabled = currentIndex === 0;
}
startAutoPlay();
}
}