همونطور که مستحضریم، جاوااسکریپت امکان تعیین Event رو به هر Element از صفحه میده که مثلا اگر فلان Element کلیک شد این اتفاقا بیافته و اگر یکی دیگه mouseover شد اون یکی اتفاقا بیفته و غیره.
تعیین این Eventها از طریق Frameworkها مثل MooTools و jQuery عجیب آدم رو یاد هلو میندازه. مخصوصا که امکان تعریف Evnet های اختصاصی رو هم میدن مثل OnLoveBoplo، OnVisitBoplo و غیره.
این فریم ورکها، امکانی برای اجرای کد در زمان تکمیل DOM رو دارند که در MooTools رویداد domReady و در jQuery متد ()ready. که به ما امکان قرار دادن کدها رو در <head> صفحه میدن و خیلی کاربرد دارند.
مثل کدهای زیر که وقتی هر لینکی کلیک شد، یه alert ناقابل نمایش میده:
// MooTools
window.addEvent('domready', function(){
$$('a').addEvent('click', function() {
alert("You've clicked " + this.href + "!");
});
});
// jQuery
$(document).ready(function(){
$('a').click(function() {
alert("You've clicked " + $(this).attr('href') + "!");
});
});
همونطور که گفتم این کد در زمان تکمیل DOM یکبار انجام میشه و Eventها رو تنظیم می کنه. همه چی آرومه و من خیلی خوشحالم تا اینکه یه جایی یک لینک توسط جاوااسکریپت ساخته میشه یا توسط Ajax به صفحه اضافه میشه و کاملا منطقی خواهد بود که چون موقع اجرای کدهای بالا اون لینک وجود نداشته، Eventاش هم Set نشده و کدهاش هم اجرا نخواهد شد. برای حل این مشکل سه راه وجود داره ....
برای اینکه بفهمی Delegation چیه، چرا خوبه و چطور عمل می کنه، ادامه مطلب رو بخون....
برچسب ها: javascript,jquery,mootools,solution
یه زمانی جاوااسکریپت منفورترین قابلیت تحت وب بود ولی بعد از پیدایش MooTools و jQuery و Prototype و غیره، به یه بخش مهم سایتهای حرفه ای تبدیل شده. از اون مهمتر اینکه باعث تحریک ذهنهای خلاق و طراحهای خوش ذوق شده.
Lazy Load یکی از این خلاقیتهاست. Lazy Load یه روش جالب برای لود تصاویر در صفحه های بلنده. مثلا سایت SmashingMagazine عزیز پست داره با این عنوان: "80 قالب زیبا برای وردپرس" این یعنی این مقاله قراره 80 تا عکس داشته باشه و از اونجاییکه این سایت یک سایت حسابیه و مخاطبینش هم سرعت اینترنت حسابی دارند (البته غیر من)، با خیال راحت کلی عکس با کیفیت میریزه تو صفحه. اما با وجود سرعت بالا هم لود همزمان این تعداد عکس ناجوره.
اینجاست که تکنیک Lazy Load مثل هوخشتره میاد و راهکار ارائه میده. این تکنیک به این صورته که هیچ عکسی لود نمیشه مگر اینکه توی منطقه قابل دید مانیتور یا Viewport کاربر باشه. این یعنی وقتی صفحه لود میشه، عکسها لود نمیشن و وقتی اسکرول می کنیم روی یک عکس، همون موقع شروع به بالا اومدن می کنه! انگار داریم همون عکسی که میبینیم رو باز می کنیم! اینجوری من با خیال راحت مقاله گنده SmashingMagazine عزیز که LazyLoad نصب کرده رو باز می کنم با این نظر که تا موقعی که پایین صفحه نرم اون عکس پایینی ها لود نمیشن و سرعتم کند نمیشه.
هم jQuery و هم MooTools این پلاگین رو دارند که پلاگین MooTools اش رو آقای David Walsh خیلی عزیز نوشته.
یه نکته دیگه اینکه این دو تا پلاگین با اینکه یه کار می کنند ولی یه تفاوت کوچیک دارند و اون اینه پلاگین jQuery وقتی لود تصویر رو شروع می کنه که عکس در Viewport قرار بگیره یا توی کادر مرورگر قابل رویت باشه ولی پلاگین MooTools یکم قبل از رسیدن اسکرول صفحه به محل تصویر عملیات لود رو شروع می کنه که به نظر من بهتره.
شنگول باشید
برچسب ها: framework,javascript,jquery,mootools
یه روش نمایش زمان، مدل چند وقت پیشه که مثلا بجای فلان زمان بنویسیم: 23 روز و 19 ساعت و 45 دقیقه پیش.
تابع زیر همین کار رو می کنه. تاریخ Timestamp میگیره و مدل "چند وقت پیش" تحویل میده. میشه توسط پارامترهاش تعیین کنیم که از سال تا ثانیه چه واحدهایی رو نمایش بده. یعنی مثلا سال و ماه و روز رو فقط نشون بده یا مثلا دقیقه و ثانیه رو نمایش نده و ....
نمونه:
$time = time() - 15*60;
echo getPastTime($time);
خروجی این خواهد بود:
15 دقیقه پیش
/**
* getPastTime : Get Past Time in String
*
*
* Author : AHHP(Amir Hossein Hodjaty Pour) ~ Boplo@Boplo.ir
* License : GPL
* Version : 1
* Created on : 1388/11/20 11:55 pm
*
* @param integer $time Unix Timestamp to parse
* @param bool $year Set to FALSE to remove Year from output. optional default to TRUE.
* @param bool $month Set to FALSE to remove Month from output. optional default to TRUE.
* @param bool $day Set to FALSE to remove Day from output. optional default to TRUE.
* @param bool $hour Set to FALSE to remove Hour from output. optional default to TRUE.
* @param bool $minute Set to FALSE to remove Minute from output. optional default to TRUE.
* @param bool $second Set to TRUE to remove Second from output. optional default to FALSE.
* @return string Formatted string
*/
function getPastTime($time, $year=true, $month=true, $day=true, $hour=true, $minute=true, $second=false) { }
برچسب ها: date,function,solution
همونطور که از عنوان مشخصه، یه تابع ساده برای inject یا تزریق مقدار در یک آرایه.
/**
* Injects input to array
*
* @param array $array Original array
* @param integer $index Index to inject into
* @param mixed $input Mixed input to be injected
* @return array New array
*/
function array_inject($array, $index, $input) {
$start = array_slice($array, 0, $index);
$inject = is_array($input) ? $input : array($input);
$end = array_slice($array, $index);
return array_merge($start, $inject, $end);
}
// Example
print_r(array_inject($arr, 2, $arr));
print_r(array_inject($arr, 2, 'an input'));
برچسب ها: array,function,solution
بازگردوندن کاراکترهای ISO-Western به فارسی یا تبدیل "Ø§Ù…ÛŒØ±ØØ³ÛŒÙ†" به "امیرحسین"
امیرحسین (اینجانب) عضو تیم پشتیبانی فارسی مادایکس به آدرس http://MODxCMS.ir هستم. خیلی وقت پیش یه کرم اینترنتی پخش شد که به محتوای فایلها، کدهای تخریبی اضافه می کرد که دامن این سایت رو گرفت و ما هم اومدیم درستش کنیم زدیم جفت چشماش رو کور کردیم و محتوای کل دیتابیس بصورت Western اینکد (Encode) شد (مثلا به این شکل: "Ø§Ù…ÛŒØ±ØØ³ÛŒÙ†") و دیگه تاریخ پیوست.
تا اینکه چند وقت پیش یکی از اعضای فروم سایت زحمت کشیدند و فایلهای سایت از جمله بخش آموزش رو که قبلا ذخیره کرده بودند رو مرتب کردند، به من دادند تا توی سایت بذارم.
قصه کافیه، من یه تابع PHP نوشتم که این کاراکترها رو به فارسی برمیگردونه. این تابع، این کاراکترهای کج و کوله رو به عنوان پارامتر میگیره و فارسی روان تحویل میده.
از این که بگذریم، من در حین تست این تابع یه روش دیگه برای برگردوندن این کاراکترها پیدا کردم که راستش خیلی ساده تر از این تابع است.
کافیه یه Notepad باز کنیم و این کاراکترها رو توش کپی کنیم بعد از ذخیره، وقتی دوباره این فایل رو باز کنیم، چی میبینیم؟ فارسی!
نظرت چیه؟
برچسب ها: function,Persian,solution
پرسيدم: چطور مي توان بهتر زندگي کرد؟
جواب داد:
- گذشته ات را بدون هيچ تاسفي بپذير، با اعتماد زمان حال ات را بگذران و بدون ترس براي آينده آماده شو.
- ايمان را نگهدار و ترس را به گوشه اي انداز.
- شک هايت را باور نکن و هيچگاه به باورهايت شک نکن.
- زندگي شگفت انگيز است فقط اگر بداني که چطور زندگي کني.
برچسب ها: احساس,خوشبینی
نسخه Evolution مادایکس، برای بخش مدیریت از یه قالب با نام MODxCarbon استفاده می کنه. قبلا چند تا دیگه بود به اضافه قالبی با نام MODxRTL برای زبانهای چپ به راست مثل فارسی.
دیروز داشتم آخرین نسخه ارائه شده تا این تاریخ که 1.0.2 هست رو تست می کردم دیدم که قالب MODxCarbon بخوبی RTL رو ساپورت می کنه و وقتی زبان بخش مدیریت رو Persian انتخاب می کنید، این بخش خودش راست به چپ میشه و مشکلی هم نداره غیر از چند تا نکته از جمله راستچین نبودن ویرایشگرش که توی دنباله مطلب توضیح داده شده.
برچسب ها: evolution,rtl,solution
الان تو سایت سیمرغ یه مقاله با یه تیتر نه چندان جالب برخوردم که خود مطلبش خیلی جالب و لطیف بود و به ما لذت تزریق کرد. تو هم بخون جالبه.
این عین مقاله از اینجاست:
اگه كمی و فقط كمی بخواهیم از زندگی لذت ببریم و نگاهمان را كمی بهتر كنیم بسیاری از لذت ها نه وقت زیادی میخواهد و نه پول زیادی. پس منتظر تغییرات زیاد در یه روزی كه معلوم نیست كی باشد نباشیم ... در کوچکترین اتفاقات عظیم ترین تجارب بشر نهفته است . باور کنید ...
1- گاهی به تماشای غروب آفتاب بنشینیم.
2- سعی كنیم بیشتر بخندیم.
3- تلاش كنیم كمتر گله كنیم.
4- با تلفن كردن به یك دوست قدیمی، او را غافلگیر كنیم.
5- گاهی هدیههایی كه گرفتهایم را بیرون بیاوریم و تماشا كنیم.
6- بیشتردعا كنیم.
7- در داخل آسانسور و راه پله و... باآدمها صحبت كنیم.
8- هر از گاهی نفس عمیق بكشیم.
......
کلا 45 تاست که پنج تای آخر از افاضات بنده است. ادامه مطلب » »
برچسب ها: احساس,خوشبینی
وقتی میخوای CSS بنویسی حتما می دونی که کدهات توی مرورگرهای مختلف که هر روز دارند بیشتر می شن، متفاوت رندر میشه. مخصوصا اینترنت اکسپلورر که به زبون خودش حرف می زنه!
واسه اینکه CSS به اصطلاح Cross-Browser داشته باشیم یعنی توی همه مرورگرها، خروجی ثابتی داشته باشه، دو راه وجود داره:
این دو راه توی ادامه پست توضیح داده شده.
برچسب ها: css,javascript,مرورگر
من 22 سال پیش تو همین لحظه به این دنیا اومدم.
پس تولدم مبارک!

برچسب ها: مناسبت
< قبلیبعدی >