PDA

View Full Version : سوال: استفاهد از code_behind برای فراخوانی یک تابع جاواسکریپت دذ هنگام لود شدن صفحه؟



elham1611
جمعه 27 آبان 1390, 18:46 عصر
با سلام
یک تابع جاوا ساکریبت دارم , میخوام در code_behind چک کنم اگر شرایط بود در هنگام لود شدن صفحه اون تابع اجرا بشه

ولی نمیدونم چی دستوری میشه این خصوصیت رو اضافه کنم.
دستور زیر هم امتحان کردم ولی نشد

Page.Attributes.Add("onload", "javacode())");

یا


OnLoad.Attributes.Add("onload", "javacode())");

RoostaYeBekr
جمعه 27 آبان 1390, 19:02 عصر
ببین به نظرم می آد که برای کاری که داری لازم نیست حتما در code behind این کار رو انجام بدی . شما می تونی توی design بری و جلوی تگ body این رو اضافه کنی :

<body onload="alert('m');" >




<body onload="alert('m');" >

elham1611
جمعه 27 آبان 1390, 19:12 عصر
ممنون ولی من یک سری شرایط برای انجام تابع دارم که متاسفانه با جاواسکریبت هرکاری میکنم نمیشه این شرایط ر بررسی کنم ولی در code behind راحت میشه برسیشون کرد.

RoostaYeBekr
جمعه 27 آبان 1390, 19:46 عصر
ممنون ولی من یک سری شرایط برای انجام تابع دارم که متاسفانه با جاواسکریبت هرکاری میکنم نمیشه این شرایط ر بررسی کنم ولی در code behind راحت میشه برسیشون کرد.

ببین من هم نفهمیدم چرا با کدی که نوشتی اجرا نشد . ولی به هر حال کار زیر را می توانی بکنی :

مثلا جلوی body را به این صورت بکنی :




<body id="body" runat="server" >



بعدی توی codebehind :




this.body.Attributes.Add("onload","alert('m')");




حالا شاید این روش خوبی نباشد . ( چون یک runat=servre اضافه شده ) . اما با توجه به اینکه کدی که نوشتی ، اجرا نشد شاید این کارت رو راه بیندازه .

elham1611
جمعه 27 آبان 1390, 20:15 عصر
ببین من هم نفهمیدم چرا با کدی که نوشتی اجرا نشد . ولی به هر حال کار زیر را می توانی بکنی :

مثلا جلوی body را به این صورت بکنی :




<body id="body" runat="server" >



بعدی توی codebehind :




this.body.Attributes.Add("onload","alert('m')");




حالا شاید این روش خوبی نباشد . ( چون یک runat=servre اضافه شده ) . اما برای رفع همین مشکل هم می تونی از یکی از کنترل های سروری ات توی صفحه کمک بگیری . چون بالاخره یک کنترل سروری که داری . مثلا به جای this .body بنویسی : this.label1

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

محمد متاله
چهارشنبه 02 آذر 1390, 03:26 صبح
با سلام
اگر می خواهید برای رویداد و یا event آبجکت خاصی که در Ccode Behind تعریف کرده اید یک تابع جاوا اسکریپت صدا بزنید می بایست به صورت زیر عمل کنید

فرض کنید Button ی در Code Behind تعریف کرده اید و می خواهید هنگامی که کاربر ماوس را روی دکمه می برد رنگ آن عوض شده و هنگامی که ماوس را از روی Button بر می داد به رنگ قبلی برگردد
خب کدهای مربوط به onmouseover و onmouseout را در قسمت Head صفحه تان می نویسید و در CodeBehind تابع جاوا اسکریپت را برای آن رویدادها به صورت زیر صدا می زنید

Button btn = new Button();
btn.Text = "محمد";

btn.Attributes.Add("onmouseover", "javascript:functionOnMouseOvet(this)");
btn.Attributes.Add("onmouseout", "javascript:functionOnMouseOut(this)");

توجه کنید که پارامتر اولی برای تابع Add رویداد مورد نظر برای همان آبجکت می باشد نه برای کل صفحه (که شما body نوشته اید) و حتما کلمه :javascript را در پارامتر دوم قرار دهید

sasansara
چهارشنبه 02 آذر 1390, 07:44 صبح
می تونید از این مثال استفاده کنید:

ُScriptManager.RegisterClientScriptBlock(this,thi s.GetType(),"key","window.open('sample.aspx','_blank');",true);

در پارامتر چهارم این تابع کد جاوااسکریپتی که می خواهید اجرا بشه رو به صورت رشته ای ارسال کنید