View Full Version : سوال: استفاده از iframe بجای آژاکس
phpweb
یک شنبه 19 دی 1389, 19:34 عصر
همونطور که می دونید آژاکس تنها به این دلیل وجود داره که جلوی بارگذاری مجدد صفحه رو بگیره.
با توجه به این مسئله، در بعضی موارد مثل ارسال فرم های تماس با ما و . . . اگه بجای آژاکس از iframe ها استفاده کنم، از نظر اصول ceo و استاندارد طراحی سایت ایرادی نداره؟
eshpilen
دوشنبه 20 دی 1389, 22:05 عصر
خب بذار کلا صفحه رفرش بشه. چه اشکالی داره؟
منکه بیشتر فرمهای تماس که دیدم غیرآجکس بودن.
چون در این فرمها کاربر نمیخواد بعدش اطلاعات دیگه ای وارد کنه یا پیام خطا نمیاد معمولا (البته قبلا سمت کلاینت چک شده - و بیشتر از اونهم نیازی نیست)، و معمولا اون صفحه مخصوص تماس هست و توش محتویات مهم دیگری نیست که کاربر با اونها کار داشته باشه، رفرش شدن صفحه هم اشکال خاصی نداره.
رفرش شدن صفحه موقع سابمیت شدن یک فرم که چیز تابو و غیراستانداردی نیست! آجکس جایی بکار میره که رفرش نشدن صفحه مزیت قابل توجهی داشته باشه. حالا شما میخوای IFrame بذاری اینم ایده ای هست؛ ولی من نمیدونم واقعا نظر استانداردها و مسائل فنی در اینمورد چیه. فکر میکنم اگر ساده و استاندارد با رفرش و بصورت معمولی طراحی کنی بهتر باشه.
یه نگاه به سایتهای مختلف و نرم افزارهای حرفه ای مثل همین فروم بکنید میبینید که چیزهایی مثل فرم ثبت نام و لاگین و غیره، همشون نهایتا بصورت عادی سابمیت میشن و رفرش کامل صفحه صورت میگیره. آجکس در جاهایی بکار میره که هنوز کار کاربر با کل اون عملیات تمام نشده.
phpweb
دوشنبه 20 دی 1389, 23:46 عصر
خب بذار کلا صفحه رفرش بشه. چه اشکالی داره؟
منکه بیشتر فرمهای تماس که دیدم غیرآجکس بودن.
چون در این فرمها کاربر نمیخواد بعدش اطلاعات دیگه ای وارد کنه یا پیام خطا نمیاد معمولا (البته قبلا سمت کلاینت چک شده - و بیشتر از اونهم نیازی نیست)، و معمولا اون صفحه مخصوص تماس هست و توش محتویات مهم دیگری نیست که کاربر با اونها کار داشته باشه، رفرش شدن صفحه هم اشکال خاصی نداره.
رفرش شدن صفحه موقع سابمیت شدن یک فرم که چیز تابو و غیراستانداردی نیست! آجکس جایی بکار میره که رفرش نشدن صفحه مزیت قابل توجهی داشته باشه. حالا شما میخوای IFrame بذاری اینم ایده ای هست؛ ولی من نمیدونم واقعا نظر استانداردها و مسائل فنی در اینمورد چیه. فکر میکنم اگر ساده و استاندارد با رفرش و بصورت معمولی طراحی کنی بهتر باشه.
یه نگاه به سایتهای مختلف و نرم افزارهای حرفه ای مثل همین فروم بکنید میبینید که چیزهایی مثل فرم ثبت نام و لاگین و غیره، همشون نهایتا بصورت عادی سابمیت میشن و رفرش کامل صفحه صورت میگیره. آجکس در جاهایی بکار میره که هنوز کار کاربر با کل اون عملیات تمام نشده.
توی سایتهای اجتماعی از آژاکس زیاد استفاده می شه.
من برای این جور موارد می خوام از این روش استفاده کنم.
sherafatian
جمعه 01 بهمن 1389, 21:34 عصر
اگه منظورت seo هست هیچ مشکلی نداره (آخه شما نوشتی CEO) و ضمنا iframe نه تنها از ایجکس جدا نیست بلکه یکی از تکنیک های ایجکسه ولی باید به شکل ایجکسی استفاده بشه یعنی نباید کل فرم تماس رو بذاری توش بلکه فقط برا رد و بدل اطلاعات ازش استفاده کنی
aminghaderi
شنبه 02 بهمن 1389, 09:17 صبح
همونطور که می دونید آژاکس تنها به این دلیل وجود داره که جلوی بارگذاری مجدد صفحه رو بگیره.
با توجه به این مسئله، در بعضی موارد مثل ارسال فرم های تماس با ما و . . . اگه بجای آژاکس از iframe ها استفاده کنم، از نظر اصول ceo و استاندارد طراحی سایت ایرادی نداره؟
عذر خواهی می کنم ولی سوال شما یکم که چه عرض کنم خیلی زیاد شبیه جوک هستش تا سوال....
خوب عزیزم iframe چه ربطی به اجکس داره؟؟؟
اجکس از رفرش شدن صفحه شما و ترافیک اضافه بروی سرور و خطوط ممانعت می کنه و نهایت بهینه سازی در استفاده از پهنای باند و افزایش سرعت هستش.
حالا iframe کارش چیه؟؟؟
کارش فقط باز کردن یه url درون صفحه هست که خوب برای ای کار نیازه به اینه که صفحه مجددا به سرور post بشه و باز دوباره load بشه و این یعنی do post back !
در حالی که کل معقوله اجکس بر اساس حذف do post back کار می کنه....
موفق باشی .
eshpilen
شنبه 02 بهمن 1389, 09:58 صبح
زیاد تند نرو. iframe هم از نظر تاریخی و هم از نظر کاربرد به آجکس ارتباط/شباهت داره.
اولا که زمانی که شیء XMLHttpRequest هنوز نبود یا در تمام مرورگرها نبود، iframe یکی از ابزارهای اصلی مورد استفاده در آجکس بود که کار XMLHttpRequest رو انجام میداد. XMLHttpRequest هم کاری نمیکنه جز اینکه پشت صحنه، یه درخواست و پاسخ HTTP و لودینگ استاندارد رو اجرا میکنه (مثل درخواست و پاسخی که برای هر صفحه و فایل و فریم دیگری ارسال و دریافت میشه)، و فرق iframe باهاش در این هست که iframe نمود نمایشی داره، اما اون زمان که از iframe برای آجکس استفاده میشد iframe مربوطه رو از نظر نمایشی در صفحهء اصلی پنهان میکردن.
دوما، یک مزیت و هدف عمدهء آجکس این هست که از رفرش شدن کل صفحه و بخشهایی که به کاربرد جاری مربوط نیستن یا کاربر باهاشون هنوز کار داره و از از دسترس خارج شدن این بخشها و لزوم انتظار کاربر تا لود مجدد صفحه جلوگیری میکنه، و این مزیت رو iframe هم به روشی که دوست عزیز گفتن گرچه آجکس نیست (استارتر هم جایی نگفته که آجکس هست)، اما کم و بیش با توجه به نوع کاربرد میتونه تامین کنه. یک شباهت و مزیتی مشابه مزیت و هدف عمدهء آجکس، حداقل بصورت نسبی، در این زمینه هست و بنده فکر میکنم بعضی جاها میتونه عملا جایگزین آجکس هم بشه و برای یک user experience مناسب کافی باشه. اما شاید بخاطر بعضی مسایل دیگه درست نباشه که باید دید چیا هست.
aminghaderi
شنبه 02 بهمن 1389, 16:15 عصر
عزیزم اشپلین جان !
تاپیک پر کردن هنر نیست عزیزم ، نوشتن هم هنر نیست ؟!
یه دلیل علمی بیار ، یه استناد علمی بکن!
اینجوری که نمی شه شما برای خودت می بری و می بافی و ...
من که بر می دارم می گم ارتباطی با اجکس نداره ، عشقی که نگفتم ، دلیل اوردم .
اگه من اطلاعات کاملی درباره شی xmlhttprequest نداشتم که نمی اومدم دوستمون رو راهنمایی کنم و حرفشون رو نقض کنم.
اگر حالش رو داشتین این (http://barnamenevis.org/showthread.php?222404-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%AC%D8%A7%D9%85%D8%B9-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%87%D8%B3%D8%AA%D9%87-Ajax) تاپیک درپیت ما رو هم یه نگاهی بنداز ، این رو لینک دادم چون حرف های من همین هاست.
درباره با آی فرم هم هیمن رو بگم که من خودم یکی از طرفداراش هستم با اینکه می کن تگ استاندارد نیست ولی من قبولش دارم ولی هنوز هم می گم ارتباطی با اجکس نداره ، مگه چند تا رفرنس از کسایی که گفتند این دو با هم ارتباط داره لینک بدهی.
موفق باشی .
eshpilen
شنبه 02 بهمن 1389, 18:02 عصر
قربونت من نمیدونم واقعا شما چقدر مطالعه کردی و منابعت چی هست. چون اینطور چیزها یا اینقدر در اکثر منابع تکرار شده و واضح هست و یا از نظر استدلالی بدیهی بنظر میرسه که فکر نمیکردم کسی بخواد انکار کنه.
یه نگاهی به این مقاله بکن و برای کلمهء ifarme توش سرچ کن و ببین درمورد ارتباطش با آجکس چی نوشته: http://en.wikipedia.org/wiki/Ajax_%28programming%29
چند جاش توضیحات کافی داده.
این در مورد ارتباط تاریخی آجکس و ifarme بود که بنظرم هنوز هم میتونه به دلایلی مورد استفاده باشه.
اما مورد دیگه که بیان کردم اصلا هدف و مزیت عمدهء آجکس بود که فکر میکنم بر همگان واضح و مبرهن باشه. آیا اون هدف و مزیت عمده جز این هست که از از دسترس خارج شدن تمام صفحه و انتظار کاربر برای لودینگ تمامش جلوگیری میکنه؟ خب شما با یک فریم داخلی هم میتونی یک چنین مزیتی رو نه به شکل روش آجکس، که نه بنده گفتم این آجکس هست و نه دوستمون، ولی بصورت نسبی پیاده کنی. البته این کار فقط درموارد خاصی معنادار هست. ببین مثلا من خودم یک شمارندهء سایت درست کردم و توش دکمهء Reload گذاشتم. البته این دکمه رو بیشتر در جریان توسعه و ابتدای ایجاد سایت نیاز داشتم که بتونم براحتی عملکرد صحیح شمارنده رو بررسی کنم و عددی که نشون میده رو آپدیت کنم، اما در عین حال کل صفحه ریلود نشه. برای اینکار میتونستم از آجکس استفاده کنم، اما به جهت سادگی و راحتی ای که ifarme داشت از ifarme بجاش استفاده کردم. اینطوری موقعی که دکمهء Reload رو میزنم، فقط یک ناحیهء کوچک که شمارنده و دکمهء اون در اون قرار داره ریلود میشه که درواقع یک ifarme هست، اما در اکثر مرورگرها این قضیه اصلا مشخص نمیشه و موقعی که اون فریم ریلود میشه یا ظاهرش اصلا تغییری نمیکنه یا اینقدر سریع ریلود میشه که چندان ناخوشایند نیست. این یک کاربرد مشخص بوده که بنده خودم از ifarme بجای آجکس استفاده کردم. اما در بقیهء کاربردها نمیگم لزوما همینقدر مناسب هست و میتونه جایگزین بشه، اما از این نظر که از ریلود شدن کل صفحه جلوگیری میکنه شباهت زیاد و مزیت مشابهی داره در مقایسه با آجکس. البته آجکس خیلی تر و تمیزتر هست و مقدار اطلاعاتی که رد و بدل میکنه کمتره. بطور مثال شما میتونید اگر یک قسمت رای گیری کوچک در صفحهء شما وجود داره، بجای آجکس از ifarme استفاده کنید، و تقریبا همون مزیت و ظاهر رو داره که با آجکس میشه پیاده کرد. یعنی با یک رای دادن ساده توسط کاربر، کل صفحه ناپدید نمیشه و کاربر مجبور نیست منتظر بمونه تا لود صفحه تموم بشه و میتونه در این مدت بقیهء مطالب سایت رو بخونه و کارهای دیگری بکنه.
دیگه اینا شما سند براشون میخوای؟ یعنی بنظرت اینقدر نامفهوم هستن؟ اصلا شما بگو مزیت و هدف عمدهء آجکس چی هست؟
البته من نمیگم کاربرد و خواص آجکس لزوما به این محدود میشه، اما این بنظرم مهمترین مزیت و هدفش بوده و هست.
eshpilen
شنبه 02 بهمن 1389, 18:29 عصر
اجکس از رفرش شدن صفحه شما و ترافیک اضافه بروی سرور و خطوط ممانعت می کنه و نهایت بهینه سازی در استفاده از پهنای باند و افزایش سرعت هستش.
بنظر بنده کم شدن ترافیک بیشتر یک مزیت جانبی آجکس هست تا مزیت و هدف اصلیش.
مزیت و هدف اصلی آجکس جلوگیری از نیاز به ریلود شدن کل صفحه برای کارهای کوچک و نامربوط بوده که زمان قابل توجهی هم مصرف میکنه.
ضمنا وقتی شما یک قسمت کوچک از صفحهء خودتون رو در یک ifarme قرار بدید، نسبت به کل صفحه حجمش خیلی کمتر هست و بنابراین تاحدودی همون خاصیت آجکس رو داره که کم کردن مصرف ترافیک هست.
البته من این کار رو توصیه نمیکنم. بهتره از همون آجکس استفاده بشه، چون خطاها رو با آجکس بهتر و راحتتر میشه هندل کرد. اما از نظر مفهومی و خاصیت، این مشترکات بین آجکس و ifarme هست. از نظر تاریخی هم که بنظرم با توجه به منبعی که بهتون دادم اگر خونده باشید باید براتون مشخص شده باشه که آجکس رو میشه با استفاده از ifarme هم پیاده سازی کرد.
XMLHttpRequest هم چیز خاصی نیست، فقط یک جایگزین مناسب تر و تمیزتر و راحتتر برای استفاده های ترفندی از چیزهای مثل ifarme هست. چه در یک ifarme و چه با XMLHttpRequest، یک درخواست HTTP عادی به سرور ارسال میشه و جوابش هم بصورت هرچیزی میتونه باشه، چند کاراکتر، یک صفحهء HTML، حتی یک تصویر؛ منتها در آجکس معمولا از XML و JSON برای ارسال اطلاعات خاصی استفاده میشه. اما عملا هرچیزی با هر فرمتی میتونه باشه؛ بطور مثال بنده یک مورد خیلی ساده از آجکس برای تعیین در دسترس بودن مقدار وارد شده در فیلد نام کاربری در یک فرم ثبت نام طراحی کردم که نه از XML استفاده میکنه و نه JSON، و فقط کاراکتر y یا n رو برمیگردونه. کاراکتر n به معنی اینه که اون نام کاربری خاص در دیتابیس قبلا ثبت نشده، و کاراکتر y به معنی این هست که نام کاربری مورد نظر در دیتابیس ثبت شده.
کدش رو هم میتونید در این کار بنده ببینید: http://barnamenevis.org/attachment.php?attachmentid=51678&d=1277303721
فایل check_field.php رو نگاه کنید متوجه میشید.
تازه حجم یک کاراکتر از یک ساختار XML یا JSON خیلی هم کمتر هست، اما هدف بنده صرفا ساده سازی و سرعت توسعهء برنامه بوده و چند ده بایت کمتر و بیشتر در مصرف پهنای باند هیچ اهمیتی نداره. مگه هر ثانیه صد تا کاربر میخوان ثبت نام کنن؟!
من که بر می دارم می گم ارتباطی با اجکس نداره ، عشقی که نگفتم ، دلیل اوردم .
دلیل شما همین دو خط بالا بود؟ شما به این میگید سند؟
شما یه چیزی یه جایی خوندی و فکر میکنی همش همینه.
ما هم مثلا نگفتیم روشی که ما استفاده میکنیم همون آجکس هست، بلکه گفتیم میتونه در بعضی موارد جایگزین راحت و سریعی باشه بجای آجکس. مثلا شما یه فرم کوچک داری در یک صفحه و وقتی سابمیت میکنی میخوای کل صفحه ریلود نشه، خب اینجا ifarme هم میتونه از ریلود شدن کل صفحه جلوگیری کنه. کافیه شما فرم خودت رو بصورت یک فایل جداگانه طراحی کنی و درون این ifarme قرار بدی. نمیشه بنظر شما؟ مشکلی داره؟ مشکلش چیه؟ حداقل در بعضی مواقع سردستی و برای تست و اینها بدرد میخوره. مثل مورد آپدیت شمارندهء سایت که گفتم. البته الان چون فریمورک های موجود کار کردن با آجکس رو ساده کردن، فکر کنم دیگه دلیلی نداره از این روشها استفاده کنیم. اما در عین حال توجه کن که مثلا ifarme یک مزیت نسبت به آجکس داره و اون اینه که بدون نیاز به جاوااسکریپت کار میکنه و اگر جاوااسکریپت مرورگر غیرفعال باشه یا ساپورت نکنه از کار نمی افته.
eshpilen
شنبه 02 بهمن 1389, 18:41 عصر
ببینم شما میدونی که حتی از تگ <script> هم میشه بجای XMLHttpRequest استفاده کرد؟
این یک روش قدیمی برای پیاده سازی آجکس بوده. درواقع احتمال داره اولین کسی که آجکس رو اختراع کرده از این روش استفاده کرده باشه. بنده قبلا پست تاریخی یک فردی رو در این ارتباط خونده بودم که شرح داده بود چطور میشه از این تگ برای کاری که درواقع همون اساس آجکس هست استفاده کرد. اون زمان اصلا XMLHttpRequest متولد نشده بود!!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.