信仰指数:修订间差异

来自SOKA CAFE
こばと
こばと留言 | 贡献 (修改)
 
第1行: 第1行:
{{全屏|
<html>
<html>
<!-- Faith Index (MediaWiki inline, no inline event handlers) -->
<head>
<div class="fi-root">
    <meta charset="UTF-8">
  <div class="faith-index-body">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <div class="faith-index-container">
     <title>信仰指数测试</title>
      <h1>信仰指数测试</h1>
    <style>
      <p class="subtitle">测测你的信仰有多虔诚</p>
        /* ---- styles (scoped by .faith-index-*) ---- */
        body, html { margin: 0; padding: 0; }
        .faith-index-body{background:linear-gradient(135deg,#0052a5 0%,#f9e300 50%,#d40000 100%);min-height:100vh;display:flex;justify-content:center;align-items:center;padding:20px;font-family:'Segoe UI','Microsoft YaHei',sans-serif;box-sizing:border-box;}
        .faith-index-container{background:rgba(255,255,255,.25);backdrop-filter:blur(12px);border-radius:20px;padding:40px;width:100%;max-width:500px;box-shadow:0 8px 32px rgba(0,0,0,.1);border:1px solid rgba(255,255,255,.4);text-align:center;margin:0 auto}
        .faith-index-container h1{color:#2c3e50;margin-bottom:10px;font-size:2.2rem;font-weight:600}
        .faith-index-container .subtitle{color:#34495e;margin-bottom:30px;font-size:1rem}
        .faith-index-container .input-group{margin-bottom:25px;text-align:left}
        .faith-index-container label{display:block;color:#2c3e50;margin-bottom:8px;font-weight:500}
        .faith-index-container input{width:100%;padding:15px;border-radius:12px;border:none;background:rgba(255,255,255,.5);color:#2c3e50;font-size:1rem;transition:all .3s ease;border:1px solid rgba(255,255,255,.5);box-sizing:border-box}
        .faith-index-container input:focus{outline:none;background:rgba(255,255,255,.7);box-shadow:0 0 0 3px rgba(44,62,80,.2)}
        .faith-index-container button{background:linear-gradient(to right,#34495e,#2c3e50);color:#fff;border:none;padding:15px 30px;border-radius:12px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease;width:100%;margin-top:10px;box-shadow:0 5px 15px rgba(44,62,80,.3);display:flex;justify-content:center;align-items:center;gap:10px}
        .faith-index-container button:hover{transform:translateY(-3px);box-shadow:0 8px 20px rgba(44,62,80,.4)}
        .faith-index-container button:active{transform:translateY(0)}
        .faith-index-container button[disabled]{opacity:.7;cursor:not-allowed;transform:none}
        .faith-index-container .loader{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top:2px solid #fff;animation:faith-index-spin 1s linear infinite}
        @keyframes faith-index-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
        .faith-index-container .result{margin-top:30px;padding:25px;border-radius:15px;background:rgba(255,255,255,.3);display:none;animation:faith-index-fadeIn .5s ease}
        @keyframes faith-index-fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
        .faith-index-container .score{font-size:3.5rem;font-weight:800;margin:15px 0;color:#2c3e50}
        .faith-index-container .comment{font-size:1.2rem;color:#2c3e50;margin:15px 0;padding:15px;border-radius:10px;background:rgba(255,255,255,.4);text-align:left;line-height:1.5}
        .faith-index-container .meter{height:20px;background:rgba(0,0,0,.1);border-radius:10px;margin:20px 0;overflow:hidden}
        .faith-index-container .meter-fill{height:100%;border-radius:10px;transition:width 1s ease;background:linear-gradient(to right,#0052a5,#f9e300,#d40000)}
        .faith-index-container .ranges{display:flex;justify-content:space-between;margin-top:10px;color:#34495e;font-size:.85rem}
        .faith-index-container .footer{margin-top:30px;color:#34495e;font-size:.9rem}
        .faith-index-container .error{color:#d9534f;background:rgba(217,83,79,.1);padding:10px;border-radius:8px;margin-top:10px;display:none}
    </style>
</head>
<body>


      <div class="input-group">
    <div class="fi-root">
        <label>请输入您的名字:</label>
        <div class="faith-index-body">
        <input class="fi-input" type="text" placeholder="输入名字..." autocomplete="off">
            <div class="faith-index-container">
      </div>
                <h1>信仰指数测试</h1>
 
                <p class="subtitle">测测你的信仰有多虔诚</p>
      <button type="button" class="fi-btn">
                <div class="input-group">
        <span class="fi-btn-text">开始测试</span>
                    <label>请输入您的名字:</label>
        <div class="loader fi-loader" style="display:none;"></div>
                    <input class="fi-input" type="text" placeholder="输入名字..." autocomplete="off">
      </button>
                </div>
 
                <button type="button" class="fi-btn">
      <div class="error fi-error" style="display:none;"></div>
                    <span class="fi-btn-text">开始测试</span>
 
                    <div class="loader fi-loader" style="display:none;"></div>
      <div class="result fi-result" style="display:none;">
                </button>
        <h2>测试结果</h2>
                <div class="error fi-error" style="display:none;"></div>
        <p>姓名: <span class="fi-name"></span></p>
                <div class="result fi-result" style="display:none;">
        <div class="score fi-score">0%</div>
                    <h2>测试结果</h2>
        <div class="meter"><div class="meter-fill fi-meter" style="width:0%"></div></div>
                    <p>姓名: <span class="fi-name"></span></p>
        <div class="ranges"><span>0-20</span><span>21-40</span><span>41-60</span><span>61-80</span><span>81-100</span></div>
                    <div class="score fi-score">0%</div>
        <div class="comment fi-comment"></div>
                    <div class="meter"><div class="meter-fill fi-meter" style="width:0%"></div></div>
        <p class="footer">* 本结果为娱乐目的,基于名字的随机计算,每次查询结果相同</p>
                    <div class="ranges"><span>0-20</span><span>21-40</span><span>41-60</span><span>61-80</span><span>81-100</span></div>
      </div>
                    <div class="comment fi-comment"></div>
                    <p class="footer">* 本结果为娱乐目的,基于名字的随机计算,每次查询结果相同</p>
                </div>
            </div>
        </div>
     </div>
     </div>
  </div>
</div>
<style>
/* ---- styles (scoped by .faith-index-*) ---- */
.faith-index-body{background:linear-gradient(135deg,#0052a5 0%,#f9e300 50%,#d40000 100%);min-height:90vh;display:flex;justify-content:center;align-items:center;padding:20px;font-family:'Segoe UI','Microsoft YaHei',sans-serif}
.faith-index-container{background:rgba(255,255,255,.25);backdrop-filter:blur(12px);border-radius:20px;padding:40px;width:100%;max-width:500px;box-shadow:0 8px 32px rgba(0,0,0,.1);border:1px solid rgba(255,255,255,.4);text-align:center;margin:0 auto}
.faith-index-container h1{color:#2c3e50;margin-bottom:10px;font-size:2.2rem;font-weight:600}
.faith-index-container .subtitle{color:#34495e;margin-bottom:30px;font-size:1rem}
.faith-index-container .input-group{margin-bottom:25px;text-align:left}
.faith-index-container label{display:block;color:#2c3e50;margin-bottom:8px;font-weight:500}
.faith-index-container input{width:100%;padding:15px;border-radius:12px;border:none;background:rgba(255,255,255,.5);color:#2c3e50;font-size:1rem;transition:all .3s ease;border:1px solid rgba(255,255,255,.5);box-sizing:border-box}
.faith-index-container input:focus{outline:none;background:rgba(255,255,255,.7);box-shadow:0 0 0 3px rgba(44,62,80,.2)}
.faith-index-container button{background:linear-gradient(to right,#34495e,#2c3e50);color:#fff;border:none;padding:15px 30px;border-radius:12px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease;width:100%;margin-top:10px;box-shadow:0 5px 15px rgba(44,62,80,.3);display:flex;justify-content:center;align-items:center;gap:10px}
.faith-index-container button:hover{transform:translateY(-3px);box-shadow:0 8px 20px rgba(44,62,80,.4)}
.faith-index-container button:active{transform:translateY(0)}
.faith-index-container button[disabled]{opacity:.7;cursor:not-allowed;transform:none}
.faith-index-container .loader{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top:2px solid #fff;animation:faith-index-spin 1s linear infinite}
@keyframes faith-index-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
.faith-index-container .result{margin-top:30px;padding:25px;border-radius:15px;background:rgba(255,255,255,.3);display:none;animation:faith-index-fadeIn .5s ease}
@keyframes faith-index-fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.faith-index-container .score{font-size:3.5rem;font-weight:800;margin:15px 0;color:#2c3e50}
.faith-index-container .comment{font-size:1.2rem;color:#2c3e50;margin:15px 0;padding:15px;border-radius:10px;background:rgba(255,255,255,.4);text-align:left;line-height:1.5}
.faith-index-container .meter{height:20px;background:rgba(0,0,0,.1);border-radius:10px;margin:20px 0;overflow:hidden}
.faith-index-container .meter-fill{height:100%;border-radius:10px;transition:width 1s ease;background:linear-gradient(to right,#0052a5,#f9e300,#d40000)}
.faith-index-container .ranges{display:flex;justify-content:space-between;margin-top:10px;color:#34495e;font-size:.85rem}
.faith-index-container .footer{margin-top:30px;color:#34495e;font-size:.9rem}
.faith-index-container .error{color:#d9534f;background:rgba(217,83,79,.1);padding:10px;border-radius:8px;margin-top:10px;display:none}
</style>
<script type="text/javascript">
(function(){
  // —— 逻辑函数 —— //
  function calculateFaithIndex(name){
    var hash = 0, i, ch;
    if (!name) return 0;
    for (i=0;i<name.length;i++){
      ch = name.charCodeAt(i);
      hash = ((hash<<5) - hash) + ch;
      hash = hash | 0;
    }
    return Math.abs(hash) % 101;
  }
  function getFaithComment(score){
    if (score <= 20) return "信仰指数较低,信心还需磨练。请多参加活动,加强学习,在广布的道路上继续精进!";
    if (score <= 40) return "作为一名初信者,你的信心正在萌芽。坚持每日的实践,你将见证不可思议的功德!";
    if (score <= 60) return "信心坚定,是广布的有力实践者。你的存在本身就是胜利的证明,请继续鼓励身边的同志!";
    if (score <= 80) return "不愧是池田门生,信心强盛如狮子王!你的祈愿必将实现,继续作为常胜的先驱奋斗吧!";
    return "了不起!你拥有佛的生命,是人间革命的先锋。你的生命正在闪耀着最尊贵的光芒!";
  }
  function bindOne(root){
    if (!root || root.__fiBound) return;
    root.__fiBound = true;
    var input  = root.querySelector('.fi-input');
    var btn    = root.querySelector('.fi-btn');
    var btnTxt = root.querySelector('.fi-btn-text');
    var loader = root.querySelector('.fi-loader');
    var result = root.querySelector('.fi-result');
    var error  = root.querySelector('.fi-error');
    var nameEl = root.querySelector('.fi-name');
    var scoreEl= root.querySelector('.fi-score');
    var cmtEl  = root.querySelector('.fi-comment');
    var meter  = root.querySelector('.fi-meter');
    function showError(msg){ if(!error) return; error.textContent=msg; error.style.display='block'; }
    function hideError(){ if(error) error.style.display='none'; }
    function run(){
      var username = (input && input.value || '').trim();
      if (!username){
        showError('请输入您的名字!');
        if (result) result.style.display = 'none';
        return;
      }
      hideError();
      if (loader) loader.style.display = 'inline-block';
      if (btnTxt) btnTxt.textContent = '计算中...';
      if (btn)    btn.disabled = true;


      setTimeout(function(){
    <script type="text/javascript">
        try{
        (function(){
          var score = calculateFaithIndex(username);
            // Find the root element to scope our DOM queries
          if (nameEl)  nameEl.textContent  = username;
            var root = document.querySelector('.fi-root');
          if (scoreEl) scoreEl.textContent = score + '%';
            if (!root) return;
          if (cmtEl)  cmtEl.textContent  = getFaithComment(score);
          if (result)  result.style.display = 'block';
          setTimeout(function(){ if (meter) meter.style.width = score + '%'; }, 60);
        } finally {
          if (loader) loader.style.display = 'none';
          if (btnTxt) btnTxt.textContent = '开始测试';
          if (btn)    btn.disabled = false;
        }
      }, 80);
    }


    // 事件绑定(不使用 inline handler)
            // Select all elements within the root
     if (btn)   btn.addEventListener('click', run);
            var input  = root.querySelector('.fi-input');
    if (input) input.addEventListener('keydown', function(e){ if (e.key === 'Enter') run(); });
            var btn     = root.querySelector('.fi-btn');
            var btnTxt  = root.querySelector('.fi-btn-text');
            var loader  = root.querySelector('.fi-loader');
            var result  = root.querySelector('.fi-result');
            var error  = root.querySelector('.fi-error');
            var nameEl  = root.querySelector('.fi-name');
            var scoreEl = root.querySelector('.fi-score');
            var cmtEl  = root.querySelector('.fi-comment');
            var meter  = root.querySelector('.fi-meter');


    // 兜底委托:DOM 若被替换,仍可触发
            // Logic functions
    root.addEventListener('click', function(e){
            function calculateFaithIndex(name){
      var b = e.target.closest && e.target.closest('.fi-btn');
                var hash = 0, i, ch;
      if (b && root.contains(b)) run();
                if (!name) return 0;
    });
                for (i = 0; i < name.length; i++){
  }
                    ch = name.charCodeAt(i);
                    hash = ((hash << 5) - hash) + ch;
                    hash = hash | 0;
                }
                return Math.abs(hash) % 101;
            }


  function bindAll(ctx){
            function getFaithComment(score){
    var scope = ctx || document;
                if (score <= 20) return "信仰指数较低,信心还需磨练。请多参加活动,加强学习,在广布的道路上继续精进!";
    var roots = scope.querySelectorAll ? scope.querySelectorAll('.fi-root') : [];
                if (score <= 40) return "作为一名初信者,你的信心正在萌芽。坚持每日的实践,你将见证不可思议的功德!";
    for (var i=0; i<roots.length; i++) bindOne(roots[i]);
                if (score <= 60) return "信心坚定,是广布的有力实践者。你的存在本身就是胜利的证明,请继续鼓励身边的同志!";
  }
                if (score <= 80) return "不愧是池田门生,信心强盛如狮子王!你的祈愿必将实现,继续作为常胜的先驱奋斗吧!";
                return "了不起!你拥有佛的生命,是人间革命的先锋。你的生命正在闪耀着最尊贵的光芒!";
            }


  // 1) 立刻尝试
            function showError(msg){ if(!error) return; error.textContent = msg; error.style.display = 'block'; }
  bindAll(document);
            function hideError(){ if(error) error.style.display = 'none'; }


  // 2) 常见时机再尝试
            function runTest(){
  if (document.readyState === 'complete') {
                var username = (input.value || '').trim();
    bindAll(document);
                if (!username){
  } else {
                    showError('请输入您的名字!');
    // DOMContentLoaded / load
                    result.style.display = 'none';
    document.addEventListener('DOMContentLoaded', function(){ bindAll(document); });
                    return;
    window.addEventListener('load', function(){ bindAll(document); });
                }
  }
                hideError();
                loader.style.display = 'inline-block';
                btnTxt.textContent = '计算中...';
                btn.disabled = true;


  // MediaWiki 的局部刷新
                setTimeout(function(){
  if (window.mw && mw.hook) {
                    try {
    mw.hook('wikipage.content').add(function($c){
                        var score = calculateFaithIndex(username);
      var node = $c && $c[0] ? $c[0] : document;
                        nameEl.textContent  = username;
      bindAll(node);
                        scoreEl.textContent = score + '%';
    });
                        cmtEl.textContent  = getFaithComment(score);
  }
                        result.style.display = 'block';
                        setTimeout(function(){ meter.style.width = score + '%'; }, 60);
                    } finally {
                        loader.style.display = 'none';
                        btnTxt.textContent = '开始测试';
                        btn.disabled = false;
                    }
                }, 800);
            }


  // 3) 监听 DOM 变化:新加/替换时自动绑定
            // Event listeners
  try {
            btn.addEventListener('click', runTest);
    var mo = new MutationObserver(function(muts){
            input.addEventListener('keydown', function(e){ if (e.key === 'Enter') runTest(); });
      for (var i=0;i<muts.length;i++){
         })();
        var m = muts[i];
    </script>
        if (m.type === 'childList') {
          // 直接子节点
          for (var j=0;j<m.addedNodes.length;j++){
            var n = m.addedNodes[j];
            if (!n || n.nodeType !== 1) continue;
            if (n.matches && n.matches('.fi-root')) bindOne(n);
            if (n.querySelectorAll) bindAll(n);
          }
         }
      }
    });
    mo.observe(document.documentElement || document.body, { childList:true, subtree:true });
  } catch(_) {}
})();
</script>


</body>
</html>
</html>
}}

2025年10月12日 (日) 16:49的最新版本

返回主页

信仰指数测试

信仰指数测试

测测你的信仰有多虔诚