PDA

View Full Version : انجام عملیات بعد از Load کامل صفحه



nasr
پنج شنبه 02 مهر 1388, 10:25 صبح
سلام
من یک صفحه دارم که شامل سه صفحه Frame است

می خوام وقتی روی دکمه های فریم سمت چپ کلیک شد صفحه ای را مثلا سایت گوگل را در فریم اصلی باز کنه که باز میکنه و مشکلی ندارم

اما می خوام بعد از اینکه سایت گوگل کامل باز شد یک رکورد به جدول من اضافه کنه.

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


Response.Redirect("google");
command = insert into table ...
حالا چطور می تونم کاری کنم که صفحه گوگل باز بشه و بعد دستورهای بعدی انجام بشه

ممنون

nasr
جمعه 03 مهر 1388, 22:49 عصر
آیا راهی نیست که عملی بعد از Load شدن کامل صفحه انجام بشه؟

Exception
جمعه 03 مهر 1388, 23:56 عصر
آیا راهی نیست که عملی بعد از Load شدن کامل صفحه انجام بشه؟
از سمت سرور نمیتونی بفهمی که صفحه لود شد. باید جاوااسکریپت بنویسی. یه وب سرویس بنویس برای این کار و روی onload مربوط به frameset فراخونیش کن (اونجا همه frameها لود شدن)

nasr
شنبه 04 مهر 1388, 09:17 صبح
میشه بیشتر توضیح بدید؟

من زیاد کار نکرده ام

ممنون

Exception
شنبه 04 مهر 1388, 22:48 عصر
میشه بیشتر توضیح بدید؟

من زیاد کار نکرده ام

ممنون
همونطور که گفتم، از سمت سرور هیچ راهی نیست که بفهمی که صفحه کی کامل لود شد. البته نه همیشه ولی در این مورد که سایتی که میخوای باز کنی متعلق به خودت نیست و کنترلی روش نداری. (اگر یک صفحه دیگه از سایت خودت باشه، راه دیگه هم هست)
حالا چاره چیه؟ این که خود مرورگر کاربر وقتی صفحه رو کامل لود کرد، به سرور اطلاع بده. برای اینکه بفهمی صفحه کی لود شده، باید با جاوااسکریپت رویداد onload مربوط به frameset رو هندل کنی (چون گفتی frame داری، طبیعتا صفحه دارای frameset هست دیگه). این رویداد وقتی فراخوانی میشه که کل صفحه (شامل همه frameها) لود شده باشه و ظاهرا این همون چیزی هست که شما میخواین.
حالا کدی که در این رویداد نوشته میشه، باید بتونه به سرور اطلاع بده که لود صفحه تموم شده. راحت ترین کار اینه که یک وب سرویس نوشته بشه (سمت سرور) که اطلاعات صفحه لود شده رو دریافت کنه (یک کد مثل SessionID) و بفهمه که کدوم صفحه لودش تموم شده و کاری که میخواین بعد از لود شدن صفحه انجام بشه رو انجام بده.
حالا شما باید در رویداد onload، با استفاده از جاوااسکریپت این وب سرویس رو فراخوانی کنید. (مثلا این رو ببینید http://www.asp.net/ajax/documentation/live/tutorials/ConsumingWebServicesWithAJAXTutorial.aspx)

PS: در کل کار چندان ساده ای نیست و ضمنا اصلا هم مطمین نیست (مثلا شاید کاربر جاوااسکریپت رو غیرفعال کرده باشه یا فراخوانی وب سرویس موفقیت آمیز نباشه) و معمولا کسی به خودش زحمت این کار رو نمیده.

nasr
یک شنبه 05 مهر 1388, 09:14 صبح
من یه سوال دارم

این سایتهایی که به ازای هر کلیک یه مبلغی میدن به طرف آیا متوجه میشن که سایت کامل باز شده یا نه؟

و اگه کاربر کلیک کنه و بلافاصله Esc را بزنه اونها می فهمند یا نه؟

اگه می فهمند چطوری؟

چون کار من هم تقریبا مشابه کار اونها میشه.

ممنون

Exception
یک شنبه 05 مهر 1388, 20:33 عصر
من یه سوال دارم

این سایتهایی که به ازای هر کلیک یه مبلغی میدن به طرف آیا متوجه میشن که سایت کامل باز شده یا نه؟

و اگه کاربر کلیک کنه و بلافاصله Esc را بزنه اونها می فهمند یا نه؟

اگه می فهمند چطوری؟

چون کار من هم تقریبا مشابه کار اونها میشه.

ممنون
اونی که من دیدم به این صورت کار میکرد که یک فریم کنترلی و یک فریم حاوی محتوای سایتی که قراره دیده بشه دارند و در فریم کنترلی یک تایمر وجود داره که بعد از رسیدن به زمان مشخصی، اطلاعات صفحه ای که دیده شده و فردی که صفحه رو دیده به سرور میفرسته تا ثبت بشه و اگر زودتر صفحه بسته بشه چیزی ثبت نمیشه.
البته من زیاد با این نوع سایتها کار نکردم و شاید بعضیها به روش دیگه ای کار کنن ولی اصول کار همینه که خدمتتون عرض کردم.