PDA

View Full Version : سوال: نحوه ایجاد iframe بصورت Auto Height در کنار AJAX



LORD AELX
دوشنبه 22 شهریور 1389, 21:39 عصر
سلام، من در صفحه اصلی سایتم، یک قسمتی دارم که صفحات جدید را در آن و توسط AJAX بارگزاری می کنم. تمام این صفحات بصورت غیر مستقیم بار می شوند و در واقع موتور دست ساز AJAX من به صفحه واسط که شامل که iframe است، رجوع کرده و آن را در صفحه اصلی می آورد. حال مشکل من این است که می خواهم بسته به اندازه صفحه جاری، اندازه iframe بطور خودکار تنظیم گردد. برای این کار از jQuery و یکی از پلاگین هایش بنام jquery.autoheight استفاده کرده ام (here (http://www.lost-in-code.com/programming/jquery-auto-iframe-height/)). :متفکر:

همانطور که مشاهده می کنید، کافیست دو فایل در قسمت head فراخوانی شوند تا iframe ما بصورت Auto Height در بیاید. ولی مشکل من اینجاست که تگ iframe را بعدا و توسط AJAX بارگزاری کرده ام و در نتیجه تنظیمات بر روی iframe های من اعمال نمی شود! :ناراحت: :اشتباه:

کسی میتونه کمک کنه؟!

متشکرم :قلب:

binyaft
چهارشنبه 24 شهریور 1389, 14:49 عصر
شما گفتید تگ iframe رو به صورت اژاکس بارگذاری کردید ؟؟؟
خوب از همون فایلی که این تگ لود میشه پلاگین جی کئوری رو بهش اضافه کنید درست میشه

LORD AELX
چهارشنبه 24 شهریور 1389, 19:11 عصر
شما گفتید تگ iframe رو به صورت اژاکس بارگذاری کردید ؟؟؟
خوب از همون فایلی که این تگ لود میشه پلاگین جی کئوری رو بهش اضافه کنید درست میشه

ببینید، من موتورم بالفرض اسمش ajax.js هستش، این موتور یک تابع به نام getpage داره که دو تا پارامتر آدرس صفحه و محل بارگذاری (نام id تگ) رو میگیره. من تو صفحه index ام اومدم منو ها رو طوری تنظیم کردم که با کلیک روی اونا توسط صفت onclick بیاد این تابع رو فراخوانی بکنه. حالا من توی آدرس این تابع، اینو وارد می کنم: loader.php?do=name که بجای name آسم فایل سوم که قراره تو iframe لود بشه رو بهش میدم. همین فایل loader.php میاد به عنوان نتیجه، یک تگ iframe که به فایل سوم اشاره کرده رو echo می کنه و به موتور AJAX بر می گردونه. موتور هم عینا همون اطلاعات رو در تگ مورد نظر در فایل index درج می کنه.

خوب، من اومدم CSS و jQuery مربوط به iframe رو در صفحه index گذاشتم، ولی روی این اطلاعات تازه بارگذاری شده عمل نمی کنند در حالی که اگر از ابتدا آن iframe را در index قرار دهیم، خیلی خوب کار می کند. پس این قضیه یک مشکلی با بارگذاری با AJAX دارد...

حالا میتونید کمکی بکنید؟

binyaft
پنج شنبه 25 شهریور 1389, 13:01 عصر
وقتی که یه صفحه رو با آژاکس لود کنیم کد های جاوا اسکریپت صفحه مورد نظر بر صفحه لود شده تاثیر نمیذاره
باید از همون صفحه که لود میشه کد های مورد نیاز رو اضافه کنید !!
این کار رو کردید؟

LORD AELX
پنج شنبه 25 شهریور 1389, 13:51 عصر
وقتی که یه صفحه رو با آژاکس لود کنیم کد های جاوا اسکریپت صفحه مورد نظر بر صفحه لود شده تاثیر نمیذاره
باید از همون صفحه که لود میشه کد های مورد نیاز رو اضافه کنید !!
این کار رو کردید؟

چطور این کار رو بکنم؟ کدی که iframe از اون echo میشه یک کد PHP هست و موتور جاوا اسکریپتی AJAX وظیفه درج این کد رو در صفحه اصلی داره، من کجا باید این تأثیر رو بر روی iframe اعمال کنم؟

LORD AELX
جمعه 26 شهریور 1389, 09:24 صبح
دوستان، من از سایت های دیگه نحوه ایجاد یک iframe که resizable باشد رو فهمیدم (با JS)، چیزی که هست اینه که من این کدهای JS ای که برای این کار هستند را هر جایی قرار می دهم، کار نمی کند. یک بار در خود فایل PHP و قبل از echoکردن iframe آن ها را echo کردم، یک بار آن ها را در خود موتور AJAX و قبل از اضافه کردن خروجی AJAX به تگ head اضافه کردم، یک بار آن ها را مستقیما در خود موتور AJAX اجرا نمودم و آن ها را از ابتدا هم در صفحه اصلی قرار دادم... ولی هیچ یک از این کار ها به عملی شدن آن کمکی نکرد... :عصبانی++:

اگر شما عبارت Auto Height iframe رو در گوگل جستجو کنید، افراد بسیاری هستند که اکثرا دقیقا کار من را انجام داده اند و مشکل داشته اند ولی من دیگه گیج شدم که چرا این مورد برای من کار نمی کند...

امیرحسین، مهدی، پس شما ها کجایید؟!! :ناراحت:

mehdi.mousavi
شنبه 27 شهریور 1389, 14:33 عصر
سلام.
من کد این Plugin (http://lib.mobius.tw/jquery/myplugin/iframe_autoHeight/autoHeight.js) رو دیدم (اسما plugin هستش و الا رسما jQuery Plugin نیستش!). اگر درست متوجه شده باشم، شما میخواهید از سمت Client صفحه ای رو Load کنید، که خودش بعنوان پاسخ، یک iframe برمیگردونه. (ضمنا، از load، get یا دیگر متودهای موجود برای گرفتن اون page استفاده کرده اید).

اگر اینطوره، شما می تونید پس از تکمیل عمل load سمت Client، تابع doIframe رو Call کنید. با فرض اینکه این به اصطلاح plugin نام برده کارش رو درست انجام بده، شما باید به هدفتون برسید.

در حال حاضر، تابع doIframe فقط هنگام load صفحه اصلی فراخوانی میشه و طبیعی هستش که از frame هایی که بعدا ممکنه load بشن، بی اطلاعه:

addEvent(window,'load', doIframe);

موفق باشید.