مدیاویکی:Common.js: تفاوت میان نسخه‌ها

بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
برچسب: برگردانده‌شده
خط ۶۸۹: خط ۶۸۹:
});
});
</script>
</script>
=========================================================================
/* ==========================================================================
  Sanjab Professional Typewriter Engine
  ========================================================================== */
mw.loader.using('jquery', function () {
    $(document).ready(function () {
        var $target = $('.sanjab-typewriter');
        if (!$target.length) return;
        $target.each(function () {
            var $this = $(this);
            var originalHTML = $this.html().trim();
           
            $this.empty().css('visibility', 'visible');
            // تفکیک هوشمند کاراکترها و تگ‌های HTML مثل <br>
            var tokens = [];
            var i = 0;
            while (i < originalHTML.length) {
                if (originalHTML.substr(i, 4).toLowerCase() === '<br>') {
                    tokens.push('<br>');
                    i += 4;
                } else if (originalHTML.substr(i, 5).toLowerCase() === '<br />') {
                    tokens.push('<br />');
                    i += 5;
                } else {
                    tokens.push(originalHTML[i]);
                    i++;
                }
            }
            var tokenIndex = 0;
            function typeNext() {
                if (tokenIndex < tokens.length) {
                    $this.append(tokens[tokenIndex]);
                    tokenIndex++;
                   
                    // ایجاد سرعت متغیر طبیعی بین ۵۰ تا ۱۲۰ میلی‌ثانیه برای هر کاراکتر
                    var randomDelay = Math.random() * (120 - 50) + 50;
                   
                    // اگر کاراکتر بعدی شکست خط بود، کمی مکث بیشتر ایجاد کن
                    if (tokens[tokenIndex] === '<br>' || tokens[tokenIndex] === '<br />') {
                        randomDelay = 400;
                    }
                    setTimeout(typeNext, randomDelay);
                } else {
                    // پایان تایپ و محو کردن نشانگر
                    setTimeout(function() {
                        $this.addClass('finished');
                    }, 800);
                }
            }
            // شروع تایپ پس از نیم ثانیه تاخیر اولیه جهت لود کامل صفحه
            setTimeout(typeNext, 600);
        });
    });
});
========================================================================