Files
tamabox/outputs/tb-page-snapshot.html
T
2026-09-08 10:10:44 +08:00

1713 lines
60 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>小狼 - 狼的提问箱 | 匿名提问箱</title>
<meta name="description" content="狼的提问箱——一个无需注册、可匿名提问的匿名提问箱,安全地倾诉与回应。">
<meta name="keywords" content="匿名提问箱,提问箱,匿名提问,狼的提问箱,匿名问答,匿名提问网站">
<link rel="preconnect" href="https://r2.337845818.best" crossorigin>
<link rel="preconnect" href="https://cdnjs.snrat.com" crossorigin>
<link rel="dns-prefetch" href="https://cn.vercount.one">
<link rel="stylesheet" href="https://cdnjs.snrat.com/ajax/libs/uikit/3.3.3/css/uikit.min.css"/>
<link rel="stylesheet" href="https://r2.337845818.best/tamabox/cdn/waline/client/v2/waline-no-commits.css" media="print" onload="this.media='all'"/>
<script defer src="https://cdnjs.snrat.com/ajax/libs/uikit/3.3.3/js/uikit.min.js"></script>
<script defer src="https://cdnjs.snrat.com/ajax/libs/uikit/3.3.3/js/uikit-icons.min.js"></script>
<style>
.uk-light { color: rgba(0,0,0,.7); }
.uk-light .uk-h1, .uk-light .uk-h2, .uk-light .uk-h3, .uk-light .uk-h4, .uk-light .uk-h5, .uk-light .uk-h6,
.uk-light .uk-heading-2xlarge, .uk-light .uk-heading-large, .uk-light .uk-heading-medium, .uk-light .uk-heading-small, .uk-light .uk-heading-xlarge,
.uk-light h1, .uk-light h2, .uk-light h3, .uk-light h4, .uk-light h5, .uk-light h6 { color: #000; }
.uk-light .uk-table th { color: rgba(0,0,0,.7); }
</style>
<script defer src="https://cdnjs.snrat.com/ajax/libs/dayjs/1.10.8/dayjs.min.js"></script>
<script defer src="https://cdnjs.snrat.com/ajax/libs/alpinejs/3.9.0/cdn.min.js"></script>
<script defer src="https://r2.337845818.best/tamabox/cdn/time.box.js"></script>
<script defer src="https://cn.vercount.one/js"></script>
<script defer src="https://cdnjs.snrat.com/ajax/libs/waline/2.15.8/waline.js"></script>
<style>
.captcha-equation-box {
display: inline-flex;
align-items: center;
background: #f0f2f5;
border: 1px solid #dcdcdc;
border-radius: 8px;
padding: 8px 8px 8px 16px;
gap: 6px;
transition: border-color 0.2s;
}
.captcha-equation-box:focus-within {
border-color: #1e87f0;
box-shadow: 0 0 0 3px rgba(30,135,240,0.12);
}
.math-captcha-modal-question {
font-size: 1.4rem;
font-family: "Courier New", monospace;
font-weight: 700;
color: #333;
letter-spacing: 1px;
white-space: nowrap;
}
#captcha-modal-answer {
width: 80px;
padding: 6px 10px;
text-align: center;
font-size: 1.2rem;
font-family: "Courier New", monospace;
font-weight: 600;
border: 1px solid #ccc;
border-radius: 5px;
outline: none;
transition: border-color 0.15s, box-shadow 0.15s;
background: #fff;
}
#captcha-modal-answer:focus {
border-color: #1e87f0;
box-shadow: 0 0 0 2px rgba(30,135,240,0.2);
}
#captcha-modal-answer::-webkit-inner-spin-button,
#captcha-modal-answer::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
#captcha-modal-answer {
-moz-appearance: textfield;
}
</style>
<style>
.grecaptcha-badge {visibility: hidden;}
.icon-container {
display: flex;
justify-content: center;
width: 100%;
}
.icon {
margin-left: 10px;
width: 20px;
height: auto;
}
.emoji-placeholder {
display: inline-block;
animation: jump 0.5s ease-in-out;
}
@keyframes jump {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-5px); }
}
.uk-dropbar {
opacity: 0;
visibility: hidden;
transition: opacity 0.2s ease, visibility 0.2s ease;
}
.uk-dropbar.uk-open {
opacity: 1;
visibility: visible;
}
a.uk-button.uk-button-link {
text-transform: none;
}
@media (max-width: 640px) {
.uk-logo {
font-size: 1rem;
}
.uk-navbar-nav a {
font-size: 0.78rem;
padding: 0 4px;
}
.emoji-placeholder {
font-size: 1rem;
}
.tb-nav-username {
max-width: 64px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: inline-block;
vertical-align: middle;
}
}
</style>
<style>
html[data-theme="dark"] {
--tb-bg: #1a1d23;
--tb-surface: #242830;
--tb-surface-2: #2d323c;
--tb-border: #3a404c;
--tb-text: #d8dce4;
--tb-text-muted: #8b93a1;
--tb-primary: #5c8dff;
}
html[data-theme="dark"],
html[data-theme="dark"] body {
background-color: var(--tb-bg) !important;
color: var(--tb-text) !important;
}
html[data-theme="dark"] .uk-card,
html[data-theme="dark"] .uk-card-default,
html[data-theme="dark"] .uk-card-secondary,
html[data-theme="dark"] .uk-dropbar,
html[data-theme="dark"] .uk-navbar-dropdown,
html[data-theme="dark"] .uk-modal-dialog,
html[data-theme="dark"] .uk-dropdown,
html[data-theme="dark"] .uk-offcanvas-bar,
html[data-theme="dark"] .uk-section,
html[data-theme="dark"] .uk-tile,
html[data-theme="dark"] .uk-panel,
html[data-theme="dark"] .uk-background-default,
html[data-theme="dark"] .uk-search-default .uk-search-input {
background-color: var(--tb-surface) !important;
color: var(--tb-text) !important;
}
html[data-theme="dark"] .uk-navbar-container {
background-color: var(--tb-surface) !important;
color: var(--tb-text) !important;
}
html[data-theme="dark"] .uk-navbar-nav > li > a,
html[data-theme="dark"] .uk-card a,
html[data-theme="dark"] .uk-link,
html[data-theme="dark"] a.uk-button-link,
html[data-theme="dark"] .uk-navbar-dropdown-nav > li > a,
html[data-theme="dark"] .uk-dropdown-nav > li > a,
html[data-theme="dark"] .uk-list a {
color: var(--tb-text) !important;
}
html[data-theme="dark"] .uk-navbar-nav > li > a:hover,
html[data-theme="dark"] .uk-card a:hover,
html[data-theme="dark"] .uk-navbar-dropdown-nav > li > a:hover,
html[data-theme="dark"] .uk-dropdown-nav > li > a:hover {
color: var(--tb-primary) !important;
}
html[data-theme="dark"] .uk-input,
html[data-theme="dark"] .uk-textarea,
html[data-theme="dark"] .uk-select {
background-color: var(--tb-surface-2) !important;
color: var(--tb-text) !important;
border-color: var(--tb-border) !important;
}
html[data-theme="dark"] .uk-input:focus,
html[data-theme="dark"] .uk-textarea:focus,
html[data-theme="dark"] .uk-select:focus {
border-color: var(--tb-primary) !important;
}
html[data-theme="dark"] .uk-text-muted,
html[data-theme="dark"] .uk-text-meta,
html[data-theme="dark"] .uk-text-secondary,
html[data-theme="dark"] .uk-text-muted a,
html[data-theme="dark"] .uk-text-small.uk-text-muted {
color: var(--tb-text-muted) !important;
}
html[data-theme="dark"] .uk-divider-icon::after,
html[data-theme="dark"] hr,
html[data-theme="dark"] .uk-table th,
html[data-theme="dark"] .uk-table td,
html[data-theme="dark"] .uk-list-divider > li:nth-child(n+2) {
border-color: var(--tb-border) !important;
}
html[data-theme="dark"] .uk-button-default {
background-color: var(--tb-surface-2) !important;
color: var(--tb-text) !important;
border-color: var(--tb-border) !important;
}
html[data-theme="dark"] .uk-modal-title,
html[data-theme="dark"] h1, html[data-theme="dark"] h2, html[data-theme="dark"] h3,
html[data-theme="dark"] h4, html[data-theme="dark"] h5, html[data-theme="dark"] h6,
html[data-theme="dark"] .uk-card-title {
color: var(--tb-text) !important;
}
html[data-theme="dark"] .uk-alert-warning,
html[data-theme="dark"] .uk-alert-danger,
html[data-theme="dark"] .uk-alert-success,
html[data-theme="dark"] .uk-alert-primary {
background-color: var(--tb-surface-2) !important;
color: var(--tb-text) !important;
}
html[data-theme="dark"] #math-captcha-modal .uk-modal-dialog {
background-color: var(--tb-surface) !important;
color: var(--tb-text) !important;
}
html[data-theme="dark"] #math-captcha-modal .captcha-equation-box {
background-color: var(--tb-surface-2) !important;
border-color: var(--tb-border) !important;
}
html[data-theme="dark"] #math-captcha-modal .math-captcha-modal-question {
color: var(--tb-text) !important;
}
html[data-theme="dark"] #math-captcha-modal #captcha-modal-answer {
background-color: var(--tb-surface) !important;
color: var(--tb-text) !important;
border-color: var(--tb-border) !important;
}
html[data-theme="dark"] #math-captcha-modal #captcha-modal-answer::placeholder {
color: var(--tb-text-muted) !important;
}
html[data-theme="dark"] #math-captcha-modal .uk-text-meta,
html[data-theme="dark"] #math-captcha-modal #captcha-modal-refresh {
color: var(--tb-text-muted) !important;
}
html[data-theme="dark"] #math-captcha-modal #captcha-modal-refresh:hover {
color: var(--tb-primary) !important;
}
html[data-theme="dark"] .uk-label {
color: #fff !important;
}
html[data-theme="dark"] .recommend-card,
html[data-theme="dark"] .recommend-card:hover {
background-color: var(--tb-surface-2) !important;
}
html[data-theme="dark"] .explore-name a {
color: var(--tb-text) !important;
}
html[data-theme="dark"] .explore-name a:hover {
color: var(--tb-primary) !important;
}
html[data-theme="dark"] .explore-intro {
color: var(--tb-text-muted) !important;
}
#theme-toggle .tb-icon-dark, #theme-toggle-mobile .tb-icon-dark { display: none; }
html[data-theme="dark"] #theme-toggle .tb-icon-light,
html[data-theme="dark"] #theme-toggle-mobile .tb-icon-light { display: none; }
html[data-theme="dark"] #theme-toggle .tb-icon-dark,
html[data-theme="dark"] #theme-toggle-mobile .tb-icon-dark { display: inline; }
</style>
<style>
.uk-navbar-nav a {
font-size: 0.95rem;
padding: 0 10px;
}
.tb-mobile-balancer { display: none; }
.tb-navbar .uk-logo {
white-space: nowrap;
}
@media (max-width: 1200px) {
.uk-navbar-nav a {
font-size: 0.88rem;
padding: 0 8px;
}
}
@media (max-width: 1000px) {
.uk-navbar-nav a {
font-size: 0.82rem;
padding: 0 6px;
}
.uk-logo {
font-size: 1.1rem;
}
.tb-nav-username {
max-width: 110px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: inline-block;
vertical-align: middle;
}
}
@media (max-width: 800px) {
.uk-navbar-nav a {
font-size: 0.78rem;
padding: 0 4px;
}
.uk-logo {
font-size: 1rem;
}
.tb-nav-username {
max-width: 80px;
}
}
@media (max-width: 640px) {
.tb-navbar {
position: relative;
min-height: 56px;
overflow: visible;
}
.tb-navbar > .uk-navbar-center {
position: relative !important;
top: auto !important;
left: auto !important;
right: auto !important;
bottom: auto !important;
transform: none !important;
display: flex !important;
align-items: center;
justify-content: center;
width: 100%;
min-height: 56px;
white-space: nowrap;
flex-wrap: nowrap;
}
.tb-navbar .uk-navbar-center-left,
.tb-navbar .uk-navbar-center-right {
position: static !important;
top: auto !important;
left: auto !important;
right: auto !important;
bottom: auto !important;
transform: none !important;
display: flex !important;
align-items: center;
flex: 0 0 auto;
white-space: nowrap;
}
.tb-navbar .uk-navbar-center-left > div,
.tb-navbar .uk-navbar-center-right > div {
display: flex;
align-items: center;
white-space: nowrap;
}
.tb-navbar .uk-navbar-nav {
display: flex;
flex-wrap: nowrap;
flex: 0 0 auto;
}
.tb-navbar .uk-navbar-nav > li > a,
.tb-navbar .uk-logo {
white-space: nowrap;
}
.tb-mobile-balancer { display: block; }
}
</style>
<style>
.tb-label-btn {
border: none !important;
cursor: pointer;
font-family: inherit;
margin: 0;
vertical-align: middle;
outline: none;
background-image: none;
box-sizing: border-box;
-webkit-appearance: none;
appearance: none;
}
.tb-label-btn:hover {
opacity: 0.85;
}
.tb-pin-flag {
font-size: 0.9em;
margin-right: 4px;
vertical-align: -1px;
cursor: default;
}
</style>
<style>
.tb-spinner {
display: inline-block;
width: 0.9em;
height: 0.9em;
border: 2px solid rgba(128, 128, 128, 0.25);
border-top-color: #666;
border-radius: 50%;
vertical-align: -2px;
animation: tb-spin 0.8s linear infinite;
}
html[data-theme="dark"] .tb-spinner {
border-color: rgba(255, 255, 255, 0.2);
border-top-color: #bbb;
}
@keyframes tb-spin {
to { transform: rotate(360deg); }
}
</style>
<style>
.tb-preline {
white-space: pre-wrap;
}
.tb-clamp-5 {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 5;
overflow: hidden;
}
.md-body {
line-height: 1.7;
text-align: left;
word-break: break-word;
}
.md-body p { margin: 0.5em 0; }
.md-body h1, .md-body h2, .md-body h3,
.md-body h4, .md-body h5, .md-body h6 {
margin: 0.8em 0 0.4em;
font-weight: 600;
line-height: 1.4;
}
.md-body ul, .md-body ol { padding-left: 1.6em; margin: 0.5em 0; }
.md-body li { margin: 0.2em 0; }
.md-body blockquote {
border-left: 3px solid #d3d1c7;
margin: 0.6em 0;
padding: 0.2em 1em;
color: #5f5e5a;
}
.md-body pre {
background: #f5f5f5;
padding: 0.8em 1em;
border-radius: 6px;
overflow-x: auto;
margin: 0.6em 0;
}
.md-body code {
background: #f0f0f0;
padding: 0.1em 0.35em;
border-radius: 4px;
font-size: 0.9em;
}
.md-body pre code { background: none; padding: 0; }
.md-body img { max-width: 100%; height: auto; }
.md-body table { border-collapse: collapse; margin: 0.6em 0; }
.md-body th, .md-body td {
border: 1px solid #ddd;
padding: 0.4em 0.8em;
}
.md-body hr { margin: 1em 0; }
html[data-theme="dark"] .md-body blockquote {
border-color: #3a404c;
color: #8b93a1;
}
html[data-theme="dark"] .md-body pre,
html[data-theme="dark"] .md-body code { background: #2d323c; }
html[data-theme="dark"] .md-body th,
html[data-theme="dark"] .md-body td { border-color: #3a404c; }
</style>
<style>
.uk-progress {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
height: 10px;
margin: 0;
border: none;
border-radius: 6px;
background-color: #e5e5e5;
overflow: hidden;
box-shadow: none;
}
.uk-progressbar {
display: block;
height: 100%;
background-color: #1e87f0;
border-radius: 6px 0 0 6px;
transition: width 0.3s ease;
}
html[data-theme="dark"] .uk-progress {
background-color: var(--tb-border);
}
html[data-theme="dark"] .uk-progressbar {
background-color: var(--tb-primary);
}
</style>
<style>
#tb-mobile-utils {
display: none;
}
@media (max-width: 640px) {
.tb-nav-utils {
display: none !important;
}
.tb-nav-username {
display: none !important;
}
#tb-mobile-utils {
display: flex;
position: fixed;
left: 0;
right: 0;
bottom: 0;
z-index: 1000;
justify-content: center;
align-items: center;
gap: 10px;
padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
background: rgba(255, 255, 255, 0.92);
-webkit-backdrop-filter: blur(8px);
backdrop-filter: blur(8px);
box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.08);
}
#tb-mobile-utils .uk-select {
width: 110px;
}
html[data-theme="dark"] #tb-mobile-utils {
background: rgba(36, 40, 48, 0.92);
box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.4);
}
body {
padding-bottom: 56px;
}
}
</style>
<meta property="og:site_name" content="狼的提问箱 | 匿名提问箱" />
<meta property="og:type" content="website" />
<meta property="og:title" content="小狼 - 狼的提问箱 | 匿名提问箱" />
<meta property="og:url" content="https://box.tama.guru/_/tamakyi" />
<meta property="og:description" content="小狼 - 狼的提问箱——一个无需注册、可匿名提问的匿名提问箱,安全地倾诉与回应。" />
<meta name="robots" content="noindex">
<meta property="og:image" content="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6?og-image=1" />
<meta property="og:image:alt" content="小狼" />
<meta itemprop="image" content="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6?og-image=1"/>
<meta name="msapplication-TileImage" content="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6"/>
<link rel="shortcut icon" href="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6?og-image=1"/>
<link rel="apple-touch-icon" href="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6?og-image=1"/>
<link rel="icon" sizes="192x192" href="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6?og-image=1">
<meta name="twitter:image:src" content="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6?og-image=1" />
<meta name="google-site-verification" content="fEPwRRJfiGsgwc5SINBQwZhPK8F0cwRaOvRx0YRurI4" />
<meta name="msvalidate.01" content="2F185E8E63C93635F50B3574F3B31E42" />
<script defer src="https://mami.tama.guru/tamami.js" data-website-id="c42ebe8b-9281-4da0-83a4-8f18b3e710fe"></script>
</head>
<body>
<nav class="uk-navbar-container uk-margin tb-navbar" uk-navbar>
<div class="uk-navbar-center">
<div class="uk-navbar-center-left">
<div>
<ul class="uk-navbar-nav">
<li><a href="/explore">探索</a></li>
<li class="tb-mobile-balancer" aria-hidden="true"><a tabindex="-1" style="visibility:hidden">我的</a></li>
</ul>
</div>
</div>
<a class="uk-navbar-item uk-logo" href="/"><span class="emoji-placeholder" aria-label="random animal">🐺</span>的提问箱</a>
<div class="uk-navbar-center-right">
<div>
<ul class="uk-navbar-nav">
<li><a href="/register">注册</a></li>
</ul>
<ul class="uk-navbar-nav">
<li><a href="/login">登录</a></li>
</ul>
<ul class="uk-navbar-nav tb-nav-utils">
<li>
<a href="#" id="theme-toggle" title="切换深色/浅色模式" aria-label="切换深色/浅色模式">
<span class="tb-icon-light">🌙</span><span class="tb-icon-dark">☀️</span>
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
<script>
document.addEventListener("DOMContentLoaded", function() {
const emojis = ["🐺","🐗","🐻","🐨","🐼","🐹","🐭","🐰","🦊","🐮","🐷","🐽","🐸","🐒","🦍","🐔","🐧","🐦","🐤","🐦‍⬛","🦅","🦉","🦇","🐴","🦄","🐝","🦎","🦖","🦕","🐙","🦑","🦐","🦞","🦀","🐡","🐠","🐟","🐬","🐳","🐋","🦈","🐊","🐅","🐆","🦓","🦍","🦧","🐘","🦛","🦏","🐪","🐫","🦒","🦘","🐃","🐂","🐄","🐎","🐖","🐏","🐑","🦙","🐐","🦌","🐕","🐩","🦮","🐕‍🦺","🐈","🐋","🐳","🐬","🐉","🐲"];
const placeholder = document.querySelector('.emoji-placeholder');
if (placeholder) {
placeholder.textContent = emojis[Math.floor(Math.random() * emojis.length)];
}
});
</script>
<div id="tb-mobile-utils">
<button type="button" id="theme-toggle-mobile" class="uk-button uk-button-default uk-button-small"
title="切换深色/浅色模式" aria-label="切换深色/浅色模式">
<span class="tb-icon-light">🌙</span><span class="tb-icon-dark">☀️</span>
</button>
</div>
<script>
(function() {
var THEME_COOKIE = 'theme';
function getTheme() {
var m = document.cookie.match(/(?:^|;\s*)theme=([^;]*)/);
return m ? m[1] : '';
}
function applyTheme(theme) {
if (theme === 'dark') {
document.documentElement.setAttribute('data-theme', 'dark');
} else {
document.documentElement.removeAttribute('data-theme');
}
}
function toggleTheme() {
var next = getTheme() === 'dark' ? 'light' : 'dark';
applyTheme(next);
var expires = new Date(Date.now() + 365 * 24 * 3600 * 1000).toUTCString();
document.cookie = THEME_COOKIE + '=' + next + '; path=/; max-age=' + (365 * 24 * 3600) + '; SameSite=Lax';
}
applyTheme(getTheme());
document.addEventListener('DOMContentLoaded', function() {
var buttons = document.querySelectorAll('#theme-toggle, #theme-toggle-mobile');
buttons.forEach(function(btn) {
btn.addEventListener('click', function(e) {
e.preventDefault();
toggleTheme();
});
});
var langSel = document.getElementById('mobile-lang-select');
if (langSel) {
langSel.addEventListener('change', function() {
if (!this.value) return;
var to = window.location.pathname + window.location.search;
window.location.href = '/i18n/' + encodeURIComponent(this.value) + '?to=' + encodeURIComponent(to);
});
}
});
})();
</script>
<div class="uk-container uk-container-xsmall">
<div id="math-captcha-modal" uk-modal>
<div class="uk-modal-dialog uk-modal-body uk-text-center">
<h3 class="uk-modal-title">人机验证</h3>
<p class="uk-text-meta">请计算下方的算术题以验证你不是机器人</p>
<div class="captcha-equation-box">
<span id="captcha-modal-question" class="math-captcha-modal-question">加载中...</span>
<input type="number" id="captcha-modal-answer" placeholder="?" autocomplete="off" inputmode="numeric">
</div>
<div style="margin-top:6px;">
<button type="button" class="uk-button uk-button-text uk-text-small" id="captcha-modal-refresh">换一题</button>
</div>
<div id="captcha-modal-error" class="uk-text-danger uk-text-small" style="display:none;min-height:20px;"></div>
<div class="uk-margin-small-top">
<button type="button" class="uk-button uk-button-primary" id="captcha-modal-submit">验证并提交</button>
<button type="button" class="uk-button uk-button-default uk-modal-close">取消</button>
</div>
</div>
</div>
<script>
var CAPTCHA_I18N = {
loading: "加载中...",
loadFailed: "加载失败",
loadRetry: "加载失败,请重试",
inputAnswer: "请输入答案",
wrongAnswer: "答案错误,请重新计算",
verifyFailed: "验证失败,请重试",
needPassword: "此提问箱需要密码",
needEmail: "请填写接收通知的邮箱地址"
};
</script>
<script>
(function() {
var captchaId = '';
var pendingForm = null;
var pendingNeedPassword = false;
var verifying = false;
function fetchCaptcha() {
var qEl = document.getElementById('captcha-modal-question');
var errEl = document.getElementById('captcha-modal-error');
var ansEl = document.getElementById('captcha-modal-answer');
qEl.textContent = CAPTCHA_I18N.loading;
fetch('/api/captcha/generate')
.then(function(r) { return r.json(); })
.then(function(data) {
if (data.code === 0 && data.data) {
captchaId = data.data.id;
qEl.textContent = data.data.question;
if (errEl) errEl.style.display = 'none';
if (ansEl) { ansEl.value = ''; ansEl.focus(); }
} else {
qEl.textContent = CAPTCHA_I18N.loadFailed;
}
})
.catch(function() {
qEl.textContent = CAPTCHA_I18N.loadRetry;
});
}
function getCSRFToken() {
var input = document.querySelector('input[name="_csrf"]');
return input ? input.value : '';
}
function doSubmit(form) {
var ans = document.getElementById('captcha-modal-answer').value.trim();
var hidden = form.querySelector('[name="g-recaptcha-response"]');
if (hidden) hidden.value = captchaId + ':' + (ans || '0');
UIkit.modal('#math-captcha-modal').hide();
if (pendingNeedPassword) {
UIkit.modal.prompt(CAPTCHA_I18N.needPassword, '', 'password')
.then(function(password) {
if (password) {
var pwInput = document.getElementById('ask_password_input');
if (pwInput) pwInput.value = password;
form.submit();
}
});
} else {
form.submit();
}
}
document.getElementById('captcha-modal-submit').addEventListener('click', function() {
if (verifying) return;
var ans = document.getElementById('captcha-modal-answer').value.trim();
if (!ans) {
var errEl = document.getElementById('captcha-modal-error');
errEl.textContent = CAPTCHA_I18N.inputAnswer;
errEl.style.display = 'block';
return;
}
verifying = true;
fetch('/api/captcha/verify', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': getCSRFToken()
},
body: JSON.stringify({ id: captchaId, answer: parseInt(ans, 10) })
})
.then(function(r) { return r.json(); })
.then(function(data) {
verifying = false;
if (data.correct) {
if (pendingForm) doSubmit(pendingForm);
} else {
var errEl = document.getElementById('captcha-modal-error');
errEl.textContent = CAPTCHA_I18N.wrongAnswer;
errEl.style.display = 'block';
fetchCaptcha();
}
})
.catch(function() {
verifying = false;
var errEl = document.getElementById('captcha-modal-error');
errEl.textContent = CAPTCHA_I18N.verifyFailed;
errEl.style.display = 'block';
fetchCaptcha();
});
});
document.getElementById('captcha-modal-answer').addEventListener('keydown', function(e) {
if (e.key === 'Enter') {
e.preventDefault();
document.getElementById('captcha-modal-submit').click();
}
});
document.getElementById('captcha-modal-refresh').addEventListener('click', fetchCaptcha);
document.addEventListener('click', function(e) {
var btn = e.target.closest('.math-captcha-trigger');
if (!btn) return;
e.preventDefault();
var form = btn.closest('form');
if (!form) return;
pendingForm = form;
pendingNeedPassword = !!(form.querySelector('#ask_password_input'));
var notifyCb = document.getElementById('notify-checkbox');
var emailInput = document.getElementById('email-input');
if (notifyCb && notifyCb.checked && emailInput && emailInput.value.trim() === '') {
UIkit.modal.alert(CAPTCHA_I18N.needEmail);
return;
}
fetchCaptcha();
UIkit.modal('#math-captcha-modal').show();
});
})();
</script>
<link rel="shortcut icon" href="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6?v=2" crossorigin="anonymous"/>
<link rel="apple-touch-icon" href="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6?v=2" crossorigin="anonymous"/>
<link rel="icon" sizes="192x192" href="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6?v=2" crossorigin="anonymous">
<style>
.profile-votes-list { display: grid; gap: 0; }
.profile-vote-item {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
min-width: 0;
padding: 14px 16px;
border-bottom: 1px solid var(--tb-border, #e9e9e9);
text-decoration: none;
}
.profile-vote-item:first-child { border-top: 1px solid var(--tb-border, #e9e9e9); }
.profile-vote-item:hover { background: var(--tb-surface-hover, #f8fbff); text-decoration: none; }
.profile-vote-content { min-width: 0; }
.profile-vote-title {
display: block;
overflow: hidden;
color: var(--tb-text, #333);
font-size: 0.98rem;
font-weight: 600;
line-height: 1.45;
text-overflow: ellipsis;
white-space: nowrap;
}
.profile-vote-meta {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 7px;
margin-top: 8px;
}
.profile-vote-meta .uk-label { font-size: 0.72rem; line-height: 1.6; }
.profile-vote-action {
flex: 0 0 auto;
color: var(--tb-primary, #1e87f0);
font-size: 0.82rem;
white-space: nowrap;
}
html[data-theme="dark"] .profile-vote-item { border-color: var(--tb-border); }
html[data-theme="dark"] .profile-vote-title { color: var(--tb-text); }
html[data-theme="dark"] .profile-vote-item:hover { background: rgba(78, 168, 245, 0.10); }
.profile-tabs {
display: flex;
gap: 4px;
padding: 4px;
margin-top: 20px;
margin-bottom: 18px;
border: 1px solid var(--tb-border, #e5e5e5);
border-radius: 9px;
background: var(--tb-surface-2, #fafafa);
}
.profile-tab {
flex: 1;
border: 0;
border-radius: 6px;
padding: 9px 15px;
background: transparent;
color: var(--tb-text-muted, #666);
cursor: pointer;
font-size: 0.9rem;
transition: background 0.2s ease, color 0.2s ease;
}
.profile-tab:hover { color: var(--tb-primary, #1e87f0); }
.profile-tab.is-active {
background: var(--tb-surface, #fff);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.10);
color: var(--tb-primary, #1e87f0);
font-weight: 600;
}
.profile-tab.is-disabled,
.profile-tab:disabled {
cursor: not-allowed;
color: var(--tb-text-muted, #999);
opacity: 0.7;
}
.profile-tab.is-disabled:hover { color: var(--tb-text-muted, #999); }
.profile-panel[hidden] { display: none !important; }
html[data-theme="dark"] .profile-tabs {
border-color: var(--tb-border);
background: var(--tb-surface-2);
}
html[data-theme="dark"] .profile-tab { color: var(--tb-text-muted); }
html[data-theme="dark"] .profile-tab.is-active { background: var(--tb-surface); color: var(--tb-primary); }
html[data-theme="dark"] .profile-tab.is-disabled { color: var(--tb-text-muted); opacity: 0.55; }
</style>
<div class="uk-card uk-card-default uk-text-center">
<div class="uk-flex uk-flex-center uk-flex-middle uk-background-cover uk-light" style="min-height: 260px;" data-src="https://r2.337845818.best/tamabox/box_background.png" uk-img>
<div class="uk-card-body">
<img class="uk-border-circle uk-box-shadow-large" src="https://r2.337845818.best/tamabox/picture/2026/09/05/2e571390c431d19d75e51971a15bd6?v=2" crossorigin="anonymous" style="width: 100px; height: 100px; max-width: 100%; max-height: 100%;">
<h3 id="usernamecolor">小狼</h3>
<p id="introcolor">提问密码是12123。欢迎你,我的朋友,不管你是因为什么原因发现这个网站,都希望它能帮助到你。有疑问和建议可以在下方提交问题,或者加群聊聊。</p>
<div class="icon-container">
<a href="https://www.acfun.cn/u/852888" target="_blank">
<img src="https://r2.337845818.best/tamabox/icon/social/ailicili.png" alt="acfunlink" class="icon">
</a>
<a href="https://blog.tama.guru" target="_blank">
<img src="https://r2.337845818.best/tamabox/icon/social/weibo.png" alt="weibolink" class="icon">
</a>
<a href="https://blog.tama.guru" target="_blank">
<img src="https://r2.337845818.best/tamabox/icon/social/xiaohongshu.png" alt="xiaohongshulink" class="icon">
</a>
<a href="https://blog.tama.guru" target="_blank">
<img src="https://r2.337845818.best/tamabox/icon/social/blog.png" alt="bloglink" class="icon">
</a>
</div>
</div>
</div>
</div>
<script>
document.getElementById("usernamecolor").style.color = "#007bff";
document.getElementById("introcolor").style.color = "#cd4c6c";
</script>
<div>
<div class="uk-card uk-card-default uk-card-small uk-card-body">
<script defer src="https://cdnjs.snrat.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script defer src='https://r2.337845818.best/tamabox/cdn/js/remake/easy.qrcode.min.js' type="text/javascript" charset="utf-8"></script>
<center><div id="boxqrimg"></div></center>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function () {
var options = {
text: window.location.href,
width: 200,
height: 200,
colorDark: ( true ? "#1C1918" : "#000000") || "#000000",
colorLight: "#6e6e6e" || "#FFFFFF",
dotScale: parseFloat("0.4") || 0.4,
dotScaleTiming: parseFloat("0.4") || 0.4,
dotScaleA: parseFloat("0.4") || 0.4,
correctLevel: QRCode.CorrectLevel.H,
logo: (function () {
var a = "https:\/\/r2.337845818.best\/tamabox\/picture\/2026\/09\/05\/2e571390c431d19d75e51971a15bd6" || "https:\/\/r2.337845818.best\/tamabox\/tamabox_low.png";
return a ? (a.indexOf("http") === 0 ? a + "?v=2" : a) : undefined;
})(),
logoWidth: 60,
logoHeight: 60,
logoBackgroundTransparent: true,
crossOrigin: 'anonymous',
backgroundImage: ("https:\/\/r2.337845818.best\/tamabox\/picture\/2024\/09\/22\/486a690e6f40a6e3939b474c9cb754" ? "https:\/\/r2.337845818.best\/tamabox\/picture\/2024\/09\/22\/486a690e6f40a6e3939b474c9cb754" : undefined),
backgroundImageAlpha: parseFloat("0.7") || 0.8,
autoColor: false,
PO: "#606175" || "#000000",
PI: "#606175" || "#000000",
AO: '',
AI: '',
timing: "#606175" || "#000000"
};
new QRCode(document.getElementById("boxqrimg"), options);
});
</script>
<p class="uk-text-center uk-text-small">扫码向@小狼提问<br>谁都可以以匿名的形式提问</p>
<div class="uk-text-center uk-margin-small-top">
<a id="share-btn" href="/_/tamakyi/share-card" download class="uk-button uk-button-default uk-button-small">
📤 分享提问箱
</a>
</div>
<div id="share-loading-overlay" style="display:none; position: fixed; top:0; left:0; width:100%; height:100%; background: rgba(255,255,255,0.85); z-index:9999;">
<div style="display:flex; flex-direction:column; align-items:center; justify-content:center; height:100%;">
<div uk-spinner="ratio: 2" class="uk-margin-bottom"></div>
<p class="uk-text-large uk-text-muted">正在生成分享图…</p>
</div>
</div>
<script>
(function() {
var btn = document.getElementById('share-btn');
var overlay = document.getElementById('share-loading-overlay');
if (!btn || !overlay) return;
btn.addEventListener('click', function(e) {
e.preventDefault();
overlay.style.display = 'block';
btn.style.pointerEvents = 'none';
fetch(btn.href)
.then(function(response) {
if (!response.ok) throw new Error('网络错误');
return response.blob();
})
.then(function(blob) {
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = 'share.png';
document.body.appendChild(a);
a.click();
setTimeout(function() {
document.body.removeChild(a);
URL.revokeObjectURL(url);
}, 100);
})
.catch(function(err) {
alert('生成分享图失败,请稍后重试');
console.error(err);
})
.finally(function() {
overlay.style.display = 'none';
btn.style.pointerEvents = 'auto';
});
});
})();
</script>
<div class="profile-tabs" role="tablist">
<button type="button" class="profile-tab is-active" data-profile-tab="questions" role="tab" aria-selected="true">提问</button>
<button type="button" class="profile-tab" data-profile-tab="votes" role="tab" aria-selected="false">投票</button>
</div>
<div class="profile-panel" data-profile-panel="questions">
<form method="post" action="/_/tamakyi" enctype="multipart/form-data" id="form">
<input type="hidden" name="_csrf" value="PFoaNHKUbYlKfz8eh4St43Ipt7o6MTc4ODYwMDk4Nzc0MDc3ODMwNA">
<input type="hidden" name="ask_password" id="ask_password_input" value="">
<input type="hidden" name="start_chat_val" id="start_chat_val" value="false">
<input type="hidden" name="g-recaptcha-response" id="g-recaptcha-response" value="">
<div class="uk-margin uk-text-center">
<textarea name="content" class="uk-textarea" rows="5" placeholder="在此处撰写你的问题..."
maxlength="1000"></textarea>
<div x-data="{ files: null }" style="width: 100%; background-color: #f8f8f8; display: flex; padding-top: 5px; padding-bottom: 5px; align-items: center; justify-content: start;gap: 5px">
<div uk-form-custom>
<a href="#" class="uk-icon-link" uk-icon="image" style="margin-left: 10px"></a>
<span style="font-size: 12px" x-text="files ? files[0].name : '添加图片'"></span>
<input id="uploader" name="images" type="file" accept="image/*" x-on:change="files = Object.values($event.target.files)">
</div>
<button x-show="files" type="button" class="uk-icon-link" uk-icon="close" style="margin-left: 10px;"
@click="files = null"></button>
</div>
</div>
<div class="uk-margin uk-grid-small">
<label class="uk-text-small">
<input name="private" class="uk-checkbox" type="checkbox"> 回复后不公开
</label>
<label class="uk-text-small">
<input name="receive_reply_via_email" id="notify-checkbox" class="uk-checkbox" type="checkbox"> 接收通知
</label>
<div id="email-container" style="width: 100%; display: none;" class="uk-margin-small-top">
<input class="uk-input uk-form-small" type="email" name="receive_reply_email" id="email-input" placeholder="请输入你的邮箱地址">
</div>
</div>
<div class="uk-margin uk-text-center">
<div class="uk-grid-small uk-flex-center" uk-grid>
<div>
<button type="button" class="uk-button uk-button-primary math-captcha-trigger" id="normal-submit-btn">发送提问</button>
</div>
<div>
<button type="button" class="uk-button uk-button-secondary" id="chat-submit-btn">发起私聊</button>
</div>
</div>
</div>
</form>
<script>
var notifyCheckbox = document.getElementById('notify-checkbox');
var emailContainer = document.getElementById('email-container');
var emailInput = document.getElementById('email-input');
if (notifyCheckbox && emailContainer && emailInput) {
notifyCheckbox.addEventListener('change', function() {
if (this.checked) {
emailContainer.style.display = 'block';
emailInput.setAttribute('required', 'required');
} else {
emailContainer.style.display = 'none';
emailInput.removeAttribute('required');
emailInput.value = '';
}
});
}
var chatBtn = document.getElementById('chat-submit-btn');
if (chatBtn) {
chatBtn.addEventListener('click', function() {
var isLogged = false;
if (!isLogged) {
var currentURI = '\/_\/tamakyi';
UIkit.modal.dialog(
'<div class="uk-text-center uk-padding" style="min-height: 150px; display: flex; flex-direction: column; justify-content: center;">' +
'<h3 class="uk-modal-title uk-margin-small-bottom">需要登录</h3>' +
'<p class="uk-text-muted uk-margin-small-bottom">发起私聊需要登录账号</p>' +
'<a href="/login?to=' + encodeURIComponent(currentURI) + '" class="uk-button uk-button-primary">去登录</a>' +
'</div>',
{width: '400px'}
);
return;
}
document.getElementById('start_chat_val').value = 'true';
var submitBtn = document.getElementById('normal-submit-btn');
if (submitBtn) submitBtn.click();
});
}
</script>
<p class="uk-text-left uk-text-muted uk-text-small">@小狼 以前回答过的问题 (32)</p>
<div id="question-list">
<div data-qid="3029">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/3029">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
<span class="tb-pin-flag" title="已置顶">⭐</span>
2026-08-27 13:42:36
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">礼貌请教小狼提问箱如何避免被恶意利用
</p>
</div>
<div data-qid="2234">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2234">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
<span class="tb-pin-flag" title="已置顶">⭐</span>
2026-05-12 21:22:46
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">小狼小狼,想问问可不可以实现提问后继续回复被提问者的功能,就像在同一层聊天一样;还有就是好像我发出提问之后,在提问者回答之前我好像都看不到自己发出的提问,这样的话感觉有点不好找(?)
</p>
</div>
<div data-qid="2894">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2894">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-08-18 14:59:06
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">以下是markdown语法展示,大部分功能基本正常实现,空格和换行调整为一般语法,html代码暂不开放。
标题展示:
Heading level 1
Heading level 2
Heading level 3
Heading level 4
Heading level 5
Heading level 6
粗体:
I just love bold text.
斜体:
Italicized text is the cat’s meow.
又粗又斜:
This text is really important.
引用:
&gt; Dorothy followed her through many of the beautiful rooms in her castle.
列表:
- First item
- Second item
- Third item
- Indented item
- Indented item
- Fourth item
代码块:
At the command prompt, type nano.
链接:
这是一个链接 提问箱。
</p>
</div>
<div data-qid="2861">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2861">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-08-13 02:04:36
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">这是个md测试:
粗体
斜体
代码
链接
</p>
</div>
<div data-qid="2463">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2463">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-07-15 15:36:26
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">小狼有没有想过为什么人总是先学会告别再学会爱吗
</p>
</div>
<div data-qid="2405">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2405">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-06-15 13:39:45
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">啊不是 是聊天室总是显示 应用程序错误:发生了客户端异常(更多信息请参见浏览器控制台)。(上一条打错字了orz
</p>
</div>
<div data-qid="2403">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2403">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-06-15 13:28:43
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">小狼是什么mbti(
</p>
</div>
<div data-qid="2402">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2402">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-06-15 13:27:29
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">页面底部的 聊天室 如何创建房间哇
</p>
</div>
<div data-qid="2399">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2399">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-06-15 05:24:30
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">这个网站的页面和box.n3ko.cc这个好像(是同一个开发者嘛
</p>
</div>
<div data-qid="2215">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2215">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-05-06 11:23:26
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">好厉害啊,自己做一个网站也太棒了吧👍🏻老师回复的好及时,感觉好温暖啊。原来这个提问箱背后是这样的初心,希望它能一直被好好运营下去,也谢谢你愿意分享这些想法✨
</p>
</div>
<div data-qid="2214">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2214">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-05-06 10:46:32
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">小狼,你做这个网站是为了什么呀
</p>
</div>
<div data-qid="2172">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2172">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-04-23 01:07:41
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">小狼小狼,请问可以有拉黑功能吗?
</p>
</div>
<div data-qid="2124">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2124">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-03-20 18:26:42
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">谢谢小狼ruarua小狼(鞠躬
</p>
</div>
<div data-qid="2120">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/2120">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2026-03-16 23:02:34
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">小狼,你有哪个瞬间感觉到“界限”消失,又或者猛然意识到命运这回事吗🤔
</p>
</div>
<div data-qid="1978">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/1978">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2025-12-30 16:15:04
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">测试图片上传机能
</p>
</div>
<div data-qid="1906">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/1906">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2025-11-16 23:03:26
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">找了几个例子,这些”?“的位置以前都是emoji,看起来好像确实是比较新的emoji会显示成符号,老版常规的像❤️这样的就可以显示出来。回答页面也是类似的情况
</p>
</div>
<div data-qid="1905">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/1905">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2025-11-15 13:58:28
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">小狼,之前提问里的emoji是可以正常显示的,但是从昨天开始变成了”?“符号🤔不过也有个别emoji现在还能显示
</p>
</div>
<div data-qid="1706">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/1706">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2025-08-31 14:02:26
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">小狼小狼今天吃了什么!
</p>
</div>
<div data-qid="1573">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/1573">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2025-07-25 12:28:46
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">awa
</p>
</div>
<div data-qid="840">
<hr>
<a class="uk-button uk-button-default uk-button-small uk-float-right"
href="/_/tamakyi/840">查看回答</a>
<div class="uk-text-left uk-text-small uk-text-muted">
2024-12-31 15:04:20
</div>
<p class="uk-text-small uk-text-break tb-preline tb-clamp-5">小狼小狼,如果提问者勾选了私密不公开提问,但又没有勾选接收通知,就算被提问者回答了,提问者是不是也没有办法看到回复呀?
</p>
</div>
</div>
<div x-data="{ more: true, loading: false, cursor: '0.1735628660879000000.840' }">
<button x-show="more" x-bind:disabled="loading" x-on:click.debounce="() => {
if (loading) return
loading = true
fetch(`/api/v1/user/tamakyi/questions?cursor=${cursor}`)
.then(response => response.json())
.then(resp => {
loading = false
// 外层为 ctx.JSON 的统一包装 {code, data, message},内层才是分页负载;
// code !== 0(接口报错)时保持 more 不变,仅复位 loading,下次可重试。
if (!resp || resp.code !== 0) return
const payload = resp.data || {}
let items = Array.isArray(payload.data) ? payload.data : []
if (items.length === 0) {
more = false
return
}
// 防重兜底:先扫描 #question-list 下全部已渲染条目(含服务端首屏与既往
// 追加)的 data-qid 构造“已见”集合,仅追加未出现过的提问。若服务端因游标
// 未前进等原因返回了与已见内容相同的批次(重复加载历史 bug 的表现形态),
// 直接按“到底”处理并隐藏按钮,杜绝无限重复追加。
const seenQIDs = new Set()
document.querySelectorAll('#question-list [data-qid]').forEach(el => seenQIDs.add(Number(el.dataset.qid)))
items = items.filter(q => !seenQIDs.has(q.id))
if (items.length === 0) {
more = false
return
}
// 服务端下发复合键集游标(见上方注释),前端不自行拼接;
// has_more 由服务端多取一条探测得出,最后一页加载完立即隐藏按钮。
more = payload.has_more !== false
cursor = payload.next_cursor || cursor
items.forEach(question => {
const div = document.createElement('div')
div.dataset.qid = question.id
div.innerHTML = `
<div>
<hr>
<a class='uk-button uk-button-default uk-button-small uk-float-right'
href='/_/tamakyi/${question.id}'>查看回答</a>
<div class='uk-text-left uk-text-small uk-text-muted'>
${question.is_pinned ? '<span class=\'tb-pin-flag\' title=\'已置顶\'>⭐</span>' : ''}
${dayjs(question.created_at).format('YYYY-MM-DD HH:mm:ss')}
</div>
<p class='uk-text-small uk-text-break tb-preline tb-clamp-5'></p>
</div>`
div.getElementsByTagName('p')[0].innerText = question.content
document.getElementById('question-list').appendChild(div)
})
})
// 网络失败/响应非法 JSON 时复位 loading,避免按钮永远停留在加载中状态
.catch(() => { loading = false })
}" class="uk-button uk-button-default uk-width-1-1 uk-margin-small-bottom">
<span x-show="!loading">加载更多</span>
<span x-show="loading"><div uk-spinner="ratio: 0.8"></div> 加载中...</span>
</button>
<div x-show="!more" class="uk-text-meta uk-text-center">
<hr>
无更多留言
<br><br>
</div>
</div>
</div>
<div class="profile-panel" data-profile-panel="votes" hidden>
<div class="profile-votes-list">
<a href="/vote/sANyLkiBNUGN" class="profile-vote-item">
<div class="profile-vote-content">
<span class="profile-vote-title" title="投票功能测试和建议反馈">投票功能测试和建议反馈</span>
<span class="profile-vote-meta">
<span class="uk-label uk-label-primary">表单收集</span>
<span class="uk-text-meta">2026-08-25</span>
</span>
</div>
<span class="profile-vote-action">去投票 <span uk-icon="icon: arrow-right; ratio: .8"></span></span>
</a>
</div>
</div>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
var tabs = document.querySelectorAll('[data-profile-tab]');
var panels = document.querySelectorAll('[data-profile-panel]');
function showPanel(name) {
tabs.forEach(function(tab) {
var active = tab.dataset.profileTab === name;
tab.classList.toggle('is-active', active);
tab.setAttribute('aria-selected', active ? 'true' : 'false');
});
panels.forEach(function(panel) {
panel.hidden = panel.dataset.profilePanel !== name;
});
if (window.history && window.history.replaceState) {
window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (name === 'votes' ? '#votes' : ''));
}
}
tabs.forEach(function(tab) {
tab.addEventListener('click', function() { showPanel(tab.dataset.profileTab); });
});
if (window.location.hash === '#votes' && document.querySelector('[data-profile-tab="votes"]')) {
showPanel('votes');
}
});
</script>
<p class=" uk-text-right uk-text-muted uk-text-small">
您是本站第 <span id="busuanzi_value_site_uv"><span class="tb-spinner"></span></span> 位访客 | 本页面已被访问 <span id="busuanzi_value_page_pv"><span class="tb-spinner"></span></span> 次
<br>Powered by NekoBox | 狼ICP备 20230101<br>提问箱已成功存活:<span id="box_runtime"></span>
<br>
<a href="https://box.tama.guru/_/tamakyi" target="_blank">找站长</a>
| <a href="https://blog.tama.guru" target="_blank">公告板</a>
| <a href="https://chat.tama.guru" target="_blank">聊天室</a>
| <a href="https://share.tama.guru" target="_blank">盘</a>
| <a href="https://status.tama.guru" target="_blank">监控板</a>
| <a href="https://tama.guru" target="_blank">导航页</a>
</p>
<br>
</div>
<script>
var SUBMIT_I18N = {
submitting: '提交中...',
uploading: '上传中...'
};
function tbResetSubmitButtons() {
document.querySelectorAll('button[data-tb-submitting]').forEach(function(b) {
b.disabled = false;
b.removeAttribute('data-tb-submitting');
var orig = b.getAttribute('data-tb-restore');
if (orig !== null) {
b.innerHTML = orig;
b.removeAttribute('data-tb-restore');
}
});
}
document.addEventListener('submit', function(e) {
var form = e.target;
if (!form || form.tagName !== 'FORM') return;
if (e.defaultPrevented || form.getAttribute('data-tb-skip-submit-feedback') === '1') {
form.removeAttribute('data-tb-skip-submit-feedback');
return;
}
if (form.getAttribute('target') === '_blank') return;
var trigger = e.submitter || form.querySelector('button[type="submit"]');
var hasFile = false;
form.querySelectorAll('input[type="file"]').forEach(function(f) {
if (f.files && f.files.length > 0) hasFile = true;
});
var label = hasFile ? SUBMIT_I18N.uploading : SUBMIT_I18N.submitting;
if (trigger && trigger.tagName === 'BUTTON') {
trigger.setAttribute('data-tb-restore', trigger.innerHTML);
trigger.innerHTML = '<span uk-spinner="ratio: 0.6"></span> ' + label;
}
form.querySelectorAll('button').forEach(function(b) {
b.disabled = true;
b.setAttribute('data-tb-submitting', '1');
});
});
window.addEventListener('pageshow', tbResetSubmitButtons);
</script>
</body>
</html>