{"id":18656,"date":"2026-07-26T16:13:50","date_gmt":"2026-07-26T16:13:50","guid":{"rendered":"https:\/\/c.tunght.xyz\/?page_id=18656"},"modified":"2026-07-26T16:13:50","modified_gmt":"2026-07-26T16:13:50","slug":"people","status":"publish","type":"page","link":"https:\/\/c.tunght.xyz\/index.php\/people\/","title":{"rendered":"people"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"zh-Hant\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>\u5168\u4e16\u754c\u4eba\u7269\u7c21\u4ecb\u901f\u67e5<\/title>\n  <style>\n    :root {\n      --primary: #2563eb;\n      --primary-hover: #1d4ed8;\n      --bg-color: #f1f5f9;\n      --card-bg: #ffffff;\n      --text-main: #0f172a;\n      --text-sub: #475569;\n      --border-color: #e2e8f0;\n      --accent-bg: #f8fafc;\n    }\n\n    * {\n      box-sizing: border-box;\n      margin: 0;\n      padding: 0;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n    }\n\n    body {\n      background-color: var(--bg-color);\n      color: var(--text-main);\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      min-height: 100vh;\n      padding: 20px;\n    }\n\n    .container {\n      background: var(--card-bg);\n      padding: 32px;\n      border-radius: 20px;\n      box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.05), 0 8px 10px -6px rgba(0, 0, 0, 0.01);\n      width: 100%;\n      max-width: 600px;\n    }\n\n    .header-title {\n      text-align: center;\n      margin-bottom: 24px;\n    }\n\n    .header-title h1 {\n      font-size: 1.75rem;\n      font-weight: 800;\n      background: linear-gradient(135deg, #2563eb, #1d4ed8);\n      -webkit-background-clip: text;\n      -webkit-text-fill-color: transparent;\n    }\n\n    .header-title p {\n      font-size: 0.875rem;\n      color: var(--text-sub);\n      margin-top: 4px;\n    }\n\n    .search-box {\n      display: flex;\n      gap: 10px;\n      margin-bottom: 20px;\n    }\n\n    input[type=\"text\"] {\n      flex: 1;\n      padding: 14px 18px;\n      border: 1.5px solid var(--border-color);\n      border-radius: 12px;\n      font-size: 1rem;\n      outline: none;\n      transition: all 0.2s ease;\n    }\n\n    input[type=\"text\"]:focus {\n      border-color: var(--primary);\n      box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.15);\n    }\n\n    button {\n      padding: 14px 24px;\n      background-color: var(--primary);\n      color: white;\n      border: none;\n      border-radius: 12px;\n      font-size: 1rem;\n      font-weight: 600;\n      cursor: pointer;\n      transition: background-color 0.2s, transform 0.1s;\n    }\n\n    button:hover {\n      background-color: var(--primary-hover);\n    }\n\n    button:active {\n      transform: scale(0.98);\n    }\n\n    .status-msg {\n      display: none;\n      text-align: center;\n      font-size: 0.95rem;\n      color: var(--text-sub);\n      margin: 16px 0;\n    }\n\n    .profile-card {\n      display: none;\n      border-top: 1px solid var(--border-color);\n      padding-top: 24px;\n      animation: slideUp 0.35s cubic-bezier(0.16, 1, 0.3, 1);\n    }\n\n    .badge {\n      display: inline-block;\n      padding: 4px 12px;\n      border-radius: 20px;\n      font-size: 0.75rem;\n      font-weight: 600;\n      background-color: #dbeafe;\n      color: #1e40af;\n      margin-bottom: 16px;\n    }\n\n    .profile-header {\n      display: flex;\n      align-items: center;\n      gap: 18px;\n      margin-bottom: 18px;\n    }\n\n    .avatar-img {\n      width: 80px;\n      height: 80px;\n      border-radius: 50%;\n      object-fit: cover;\n      border: 3px solid white;\n      box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n    }\n\n    .avatar-placeholder {\n      width: 80px;\n      height: 80px;\n      border-radius: 50%;\n      background: linear-gradient(135deg, #e0f2fe, #bae6fd);\n      color: var(--primary);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 2rem;\n      font-weight: bold;\n      box-shadow: 0 4px 12px rgba(0,0,0,0.05);\n    }\n\n    .profile-info h2 {\n      font-size: 1.35rem;\n      color: var(--text-main);\n      margin-bottom: 4px;\n    }\n\n    .profile-info p {\n      font-size: 0.9rem;\n      color: var(--text-sub);\n    }\n\n    .bio {\n      line-height: 1.7;\n      color: #334155;\n      font-size: 0.98rem;\n      background: var(--accent-bg);\n      padding: 18px;\n      border-radius: 12px;\n      border: 1px solid var(--border-color);\n      margin-bottom: 18px;\n    }\n\n    .actions {\n      display: flex;\n      gap: 12px;\n      flex-wrap: wrap;\n    }\n\n    .link-btn {\n      display: inline-flex;\n      align-items: center;\n      gap: 6px;\n      padding: 8px 14px;\n      border-radius: 8px;\n      font-size: 0.875rem;\n      text-decoration: none;\n      font-weight: 500;\n      transition: background-color 0.2s;\n    }\n\n    .link-btn-primary {\n      background-color: #f1f5f9;\n      color: var(--text-main);\n    }\n\n    .link-btn-primary:hover {\n      background-color: #e2e8f0;\n    }\n\n    .link-btn-secondary {\n      background-color: #fff;\n      color: var(--text-sub);\n      border: 1px solid var(--border-color);\n    }\n\n    .link-btn-secondary:hover {\n      background-color: #f8fafc;\n      color: var(--text-main);\n    }\n\n    @keyframes slideUp {\n      from { opacity: 0; transform: translateY(12px); }\n      to { opacity: 1; transform: translateY(0); }\n    }\n  <\/style>\n<\/head>\n<body>\n\n  <div class=\"container\">\n    <div class=\"header-title\">\n      <h1>\u5168\u4e16\u754c\u4eba\u7269\u7c21\u4ecb\u901f\u67e5<\/h1>\n      <p>\u8f38\u5165\u5168\u7403\u6b77\u53f2\u4eba\u7269\u3001\u540d\u4eba\u6216\u5b78\u8005\u59d3\u540d\uff0c\u7372\u53d6\u5373\u6642\u7c21\u4ecb<\/p>\n    <\/div>\n    \n    <div class=\"search-box\">\n      <input type=\"text\" id=\"nameInput\" placeholder=\"\u8acb\u8f38\u5165\u4eba\u7269\u59d3\u540d\uff08\u4f8b\u5982\uff1a\u9054\u82ac\u5947\u3001\u5f35\u5fe0\u8b00\u3001\u6cf0\u6208\u723e\uff09\">\n      <button onclick=\"searchPerson()\">\u641c\u5c0b<\/button>\n    <\/div>\n\n    <div id=\"statusMsg\" class=\"status-msg\">\u6b63\u5728\u5168\u7db2\u6aa2\u7d22\u4eba\u7269\u8cc7\u6599&#8230;<\/div>\n\n    <div id=\"profileCard\" class=\"profile-card\">\n      <span class=\"badge\" id=\"sourceBadge\">\u7dad\u57fa\u767e\u79d1\u516c\u958b\u8cc7\u6599<\/span>\n      \n      <div class=\"profile-header\">\n        <div id=\"avatarContainer\"><\/div>\n        <div class=\"profile-info\">\n          <h2 id=\"personName\">&#8212;<\/h2>\n          <p id=\"personDescription\">&#8212;<\/p>\n        <\/div>\n      <\/div>\n\n      <div id=\"personBio\" class=\"bio\">&#8212;<\/div>\n\n      <div class=\"actions\">\n        <a id=\"wikiUrl\" class=\"link-btn link-btn-primary\" href=\"#\" target=\"_blank\" rel=\"noopener\">\u95b1\u8b80\u7dad\u57fa\u767e\u79d1\u5b8c\u6574\u689d\u76ee \u2197<\/a>\n        <a id=\"googleUrl\" class=\"link-btn link-btn-secondary\" href=\"#\" target=\"_blank\" rel=\"noopener\">\u5728 Google \u641c\u5c0b\u76f8\u95dc\u65b0\u805e \u2197<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n    async function searchPerson() {\n      const input = document.getElementById(\"nameInput\").value.trim();\n      const card = document.getElementById(\"profileCard\");\n      const statusMsg = document.getElementById(\"statusMsg\");\n\n      if (!input) return;\n\n      \/\/ \u756b\u9762\u91cd\u7f6e\u8207\u8f09\u5165\u72c0\u614b\n      card.style.display = \"none\";\n      statusMsg.style.color = \"var(--text-sub)\";\n      statusMsg.innerText = \"\u6b63\u5728\u5168\u7db2\u6aa2\u7d22\u4eba\u7269\u8cc7\u6599...\";\n      statusMsg.style.display = \"block\";\n\n      try {\n        \/\/ \u7b2c\u4e00\u968e\u6bb5\uff1a\u7cbe\u6e96\u6bd4\u5c0d (Summary API)\n        let response = await fetch(`https:\/\/zh.wikipedia.org\/api\/rest_v1\/page\/summary\/${encodeURIComponent(input)}`);\n        let data = null;\n\n        if (response.ok) {\n          data = await response.json();\n        }\n\n        \/\/ \u7b2c\u4e8c\u968e\u6bb5\uff1a\u82e5\u7cbe\u6e96\u6bd4\u5c0d\u5931\u6557\uff0c\u89f8\u767c\u5168\u7db2\u6a21\u7cca\u641c\u5c0b (Search API)\n        if (!data || data.type === \"disambiguation\" || !data.extract) {\n          const searchResponse = await fetch(`https:\/\/zh.wikipedia.org\/w\/api.php?action=query&list=search&srsearch=${encodeURIComponent(input)}&format=json&origin=*`);\n          const searchData = await searchResponse.json();\n\n          if (searchData.query && searchData.query.search.length > 0) {\n            \/\/ \u53d6\u5f97\u76f8\u95dc\u5ea6\u6700\u9ad8\u7684\u689d\u76ee\u540d\u7a31\u91cd\u65b0\u7372\u53d6\u6458\u8981\n            const bestMatchTitle = searchData.query.search[0].title;\n            const fallbackResponse = await fetch(`https:\/\/zh.wikipedia.org\/api\/rest_v1\/page\/summary\/${encodeURIComponent(bestMatchTitle)}`);\n            if (fallbackResponse.ok) {\n              data = await fallbackResponse.json();\n            }\n          }\n        }\n\n        \/\/ \u82e5\u4f9d\u7136\u627e\u4e0d\u5230\u8cc7\u6599\n        if (!data || !data.extract) {\n          throw new Error(\"NotFound\");\n        }\n\n        \/\/ \u6210\u529f\u53d6\u5f97\u8cc7\u6599\uff0c\u6e32\u67d3\u756b\u9762\n        document.getElementById(\"personName\").innerText = data.title;\n        document.getElementById(\"personDescription\").innerText = data.description || \"\u5168\u7db2\u516c\u958b\u689d\u76ee\";\n        document.getElementById(\"personBio\").innerText = data.extract;\n        \n        \/\/ \u8a2d\u5b9a\u5916\u90e8\u9023\u7d50\n        document.getElementById(\"wikiUrl\").href = data.content_urls.desktop.page;\n        document.getElementById(\"googleUrl\").href = `https:\/\/www.google.com\/search?q=${encodeURIComponent(data.title)}`;\n\n        \/\/ \u982d\u50cf\u8655\u7406\n        const avatarContainer = document.getElementById(\"avatarContainer\");\n        if (data.thumbnail && data.thumbnail.source) {\n          avatarContainer.innerHTML = `<img decoding=\"async\" src=\"${data.thumbnail.source}\" alt=\"${data.title}\" class=\"avatar-img\">`;\n        } else {\n          avatarContainer.innerHTML = `<div class=\"avatar-placeholder\">${data.title.charAt(0)}<\/div>`;\n        }\n\n        statusMsg.style.display = \"none\";\n        card.style.display = \"block\";\n\n      } catch (err) {\n        statusMsg.style.color = \"#ef4444\";\n        statusMsg.innerHTML = `\u672a\u627e\u5230\u300c<b>${input}<\/b>\u300d\u7684\u8a73\u7d30\u7c21\u4ecb\u3002<br><a href=\"https:\/\/www.google.com\/search?q=${encodeURIComponent(input)}\" target=\"_blank\" style=\"color: var(--primary); font-size: 0.9rem; margin-top: 6px; display: inline-block;\">\u6539\u5728 Google \u641c\u5c0b\u300c${input}\u300d\u2197<\/a>`;\n      }\n    }\n\n    \/\/ \u6309\u4e0b Enter \u9375\u81ea\u52d5\u89f8\u767c\u641c\u5c0b\n    document.getElementById(\"nameInput\").addEventListener(\"keypress\", function(event) {\n      if (event.key === \"Enter\") {\n        searchPerson();\n      }\n    });\n  <\/script>\n\n<\/body>\n<\/html>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5168\u4e16\u754c\u4eba\u7269\u7c21\u4ecb\u901f\u67e5 \u5168\u4e16\u754c\u4eba\u7269\u7c21\u4ecb\u901f\u67e5 \u8f38\u5165\u5168\u7403\u6b77\u53f2\u4eba\u7269\u3001\u540d\u4eba\u6216\u5b78\u8005\u59d3\u540d\uff0c\u7372\u53d6\u5373\u6642\u7c21\u4ecb \u641c\u5c0b \u6b63\u5728\u5168\u7db2\u6aa2\u7d22\u4eba\u7269\u8cc7\u6599&#8230; \u7dad\u57fa\u767e\u79d1\u516c\u958b\u8cc7\u6599 &#8212; &#8212; &#8212; \u95b1\u8b80\u7dad\u57fa\u767e\u79d1\u5b8c\u6574\u689d\u76ee \u2197 \u5728 Google \u641c\u5c0b\u76f8\u95dc\u65b0\u805e \u2197<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-18656","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/c.tunght.xyz\/index.php\/wp-json\/wp\/v2\/pages\/18656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/c.tunght.xyz\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/c.tunght.xyz\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/c.tunght.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/c.tunght.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=18656"}],"version-history":[{"count":1,"href":"https:\/\/c.tunght.xyz\/index.php\/wp-json\/wp\/v2\/pages\/18656\/revisions"}],"predecessor-version":[{"id":18657,"href":"https:\/\/c.tunght.xyz\/index.php\/wp-json\/wp\/v2\/pages\/18656\/revisions\/18657"}],"wp:attachment":[{"href":"https:\/\/c.tunght.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=18656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}