مدیاویکی:Common.js: تفاوت میان نسخهها
بدون خلاصۀ ویرایش |
Esfandiari (بحث | مشارکتها) بدون خلاصۀ ویرایش برچسب: برگرداندهشده |
||
| خط ۶۸۹: | خط ۶۸۹: | ||
}); | }); | ||
</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); | |||
}); | |||
}); | |||
}); | |||
======================================================================== | |||