PDA

View Full Version : حرفه ای: چندبار اجرا شدن function



*unos*
شنبه 01 شهریور 1393, 00:21 صبح
با سلام
تعدادی صفحه دارم که با jquery لود میشن
دفعه اول همه چیز درست کار میکنه اما اگه یه صفحرو دوباره لود کنم تمام function ها بیش از یه بار fire میشن
به تعداد دفعات لود صفحه
ایا راهی هست که فقط یکبار اجازه بده به function ها که اجرا بشن؟
یا هر دفعه هنگام لود صفحه اگه قبلا. Js لود شده بود حذف بشه و مجدد لود بشه؟
Jquery 1.11.0 استفاده میکنم

مهرداد سیف زاده
شنبه 01 شهریور 1393, 08:36 صبح
این یکی از مشکلات در ساخت صفحات وب هست. البته مشکل شما عادی هست و راهی بجز پاک کردن کش قبلی و لود دیتای جدید نیست
و راهکار:
۱- اگر بر روی لوکال دارید کار میکنید تا صفحه آماده بشه و نتیجه نهایی رو بدید. یعنی شما فعلا روی کامپیوتر خودتون مشکل دارید و اسن مشکل بعد از انجام پایان کار دیگر نخواهد و فعلا نیاز به پاک کردن اطلاعات قبلی دارید میتونید از header صفحه کمک بگیرید و در هر زبانی مثل php بگردید ببینید برای پاک کردن کش و اطلاعات قبلی چه توابعی وجود داره من نمونه php رو میزارم ولی این رو باید در موقع تحویل پایانی بردارید چون روی سرعت بارگزاری تاثیر داره


header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Content-Type: application/xml; charset=utf-8");


2- کار روی اینترنت داره انجام میشه و شما به مشتری میگید که صفحه رو هر بار با گرفتن ctrl+f5 رفرش کنه
3- اما مشکل شما با راهکار سوم حل خواهد شد. و اونم گول زدن مرورگر در کش کردن و نگهداری توابع قبلی هست. ببینید مرورگرها وقتی یک فایل js رو از مسیر خاصی از سایت لود میکنن اون رو در کش خودشون نگه میدارن و تا وقتی که اون مسیر عوش نشده همونطور پار بر جاست اون کش ولی شاید شما مقادیر رو بخواید عوض کنید یا اصلا نمیخواید اطلاعات قبلی رو نگه داره ولی اون حالیش نیست و نگه میداره. برای گول زدنش هر بار مسیر رو عوض کنید. این کار از طریق دادن مقدار GET به انتهای یک فایل امکان پذیر هست بصورت زیر


echo '<script src="http://www.siteman.com/js/main.js?r='.time().'"></script>';

اگر دقت کنید هر بار که قراره این فایل لود بشه از یک مسیر مجزا هست و تمام اطلاعاتش هم جدید و کش قبلی هم وجود نداره

*unos*
دوشنبه 03 شهریور 1393, 01:34 صبح
باتشکر
حالا فرض بگیرید من چند صفحه دارم که با jquery لود میشن و داخل هر فرم یه فایل. Js هم لود میشه
حالا اگه داخل فایل های js توابع هم نام داشته باشیم، موقع فراخوانی یکیشون احتمال داره یه تابع هم نام از یه js دیگه فراخوانی بشه
برای این مساله راه حلی وجود داره