צד לקוח או צד שרת?

ללא ספק צד לקוח

<script type ="text/javascript" > timeoutID = window.setTimeout("document.getElementById('someDiv').style.display='none'", 3000); </script> <div id="someDiv"> Content </div>​
זה בערך איך שזה אמור להיראות...
 

24sharon

New member
תגובה

השאלה לא הייתה אם לבצע את הפעולה בצד שרת, אלא אם מקור השאלה הוא צד לקוח או צד שרת. הדוגמא שהבאת היא מצוינת, הבעיה שהDIV מוצג דינמית באמצעות קוד, ולכן לא רציתי לגרום לשגיאת ג'אווה סקריפט. פתרתי את זה ע"י להכניס את כל הסקריפט לפאנל. מה שגורם שבמידה והוא לא מוצג אז גם הסקריפט לא מוצג.
<asp:panel ID="Panel1" runat="server" CssClass="chov" Visible="false"> <center> <script type ="text/javascript" > window.setTimeout("document.getElementById('<%=Panel1.ClientID %>').style.display='none'", 3000); </script> <img src="https://timg.co.il/f/gavel.gif" /> <h1> יש לגבות תשלום </h1> </center> </asp:panel>​
ובדף הקוד
if (d1 > 0) { Panel1.Visible = true; Panel1.Attributes.Add("onclick", "this.style.display='none'"); }​
תודה רבה ושבת שלום!
 
נצל"ש מכיר את הנושא... אין חלופה?

לא הבנתי קודם מהדברים שזו הנקודה. אני גם נתקלתי בבעיה הזאת של קוד JS שאמור להיות מנוהל מתוך הצד שרת, וגם אני עשיתי את הפתרון המעוות הזה של "לעטוף" את הJS בPANEL... אין דרך טובה יותר?! בכל מקרה נקרה שהיות והASP.NET בנוי כ"קופסה שחורה" אז בפני עצמו הוא עובד בסדר ברוב המקרים אבל כש משלבים איתו קוד XHTML רגיל (לא מנוהל מצד שרת) אז אתה לא יודע למה לצפות אחרי ההידור, הקוד של ASP.NET יכול ליצור כל תוכן XHTML שיחפוץ בלי לתאם (כמה שידוע לי) אם אף אחד, ואז יוצאים אי תאימויות בין הASP.NET לבין הקוד הXHTML הסטטי... וזה בלי לציין את שמות הID שASP.NET מחלק לפקדים שלו ושוב בלי לתאם (איך אני ידע איך אחרי הרינדור קוראים לLabel ששמתי בתוך GridView בתוך דף שמרונדר בתוך MasterPage?). אם המטרה של מפתחי ASP.NET היתה שכל הקוד יכתב בצורה Managed מצד שרת, אז הם נכשלו בגדול (לא ניתן לפנות לשרת כל רגע!). ואם המטרה היתה רק לפתור את בעיית התאימות לכל הדפדפנים אז כפי שאמרתי זה מסבך למתכנתים את החיים עוד יותר בגלל ה"עצמאיות יתר" של ה"קופסה השחורה" שנקראת ASP.NET. הדיון לא נוגע ללוגיקה שמתבצעת כולה בצד שרת, שהיא צורך בסיסי בכל אפליקציה, אלא נוגע רק ל"Asp:Element"ים למיניהם...
 

Justin Angel

New member
../images/Emo26.gif

בכלל לא ברור מה הבעיה כאן. כדי לדעת את שם הפקד בתוך הריככית הפקדים ניתן לפנות ל-myControl.ClientID. אחרת כל התנגשות בין שמות פקדים תגרור לשגיאת ג'אווה סקריפט, מה שנמנע עבורך.
 

itaysk

New member
אם כבר ClientID

אני מתחיל להכנס לJS..הצלחתי לשלב JS בישומי asp.net שלי, וכל פעם שרציתי להתייחס לפקד קראתי לו לפי השם שנתתי לו בצד שרת.לדוגמא אם יצרתי <asp:TextBox Id="TextBox1"> יכולתי בצד לקוח להתייחס אליו עם
document.getElementById("TextBox1")​
אז למה צריך את ClientID?
 

Justin Angel

New member
קה פרובלמה מואי צ'יקיטה?

בעיה נפוצה ב-Web היא שתיים או יותר פקדים עם אותו ID. למשל, אם יש לי באמת את TextBox1 גם ב-MasterPage, גם פקד נוסף עם אותו ID בדף שלי וגם בתוך User Control שנמצא בתוכו. סה"כ יש לי שלושה פקדים שונים עם אותו ID. ASP.Net פותר את אוטומטית את ההתנגשות הזה בזה שהוא יוצר היררכיה של שמות החל מהפקד האב ועד הפקד הבן. וכך שמו המלא (ClientID ו-UniqueID) יקבעו לפי ה-ID של כל הפקדים שבתוכם יושב הפקד ושמו של הפקד. לכן בעבודה בצד לקוח (ב-CSS ספציפי לפי ID ובג'אווה סקריפט שמבצע חיפוש לפי ID) חובה להשתמש תמיד ב-ClientID ולא ב-ID.
 

Justin Angel

New member
קה פרובלמה מואי צ'יקיטה?

סביר להניח שאתה לא עובד עם: Master Pages User Controls Custom Controls Composite Controls Templates ועוד המון פיצ'רים אחרים של הפריימוורק שיוצרים ירושת הירככיה דרך INamingContainer. סביר להניח שאתה עושה המון חזרת קוד והמון עיצוב ידני מה שמוסיף שנים של עבודה סיזיפית לפיתוח אתר ויוצר אתר בלתי אפשרי לתחזוקה. תנסה לעשות את זה בתוך אותו דף בדיוק רק שהוא עם Master Page והג'אווה סקריפט יפסיק לפעול.
 
מה לגבי הבעיות האחרות?

תודה על ההארה לגבי element.ClientID, לא הכרתי את הנושא. עדיין נשארו לי 2 שאלות: 1. למה אין משהו (אני לא מכיר) כמו "מנהל סקריפטים" בצד השרת, ככה שהמתכנת לא ייתרך לכתוב את קוד הJS לתוך הResponse דרך פקודות כמו Write... עם אלף הוספות בסגנון "js code" + element.ClientID + "js code 2. פתחתי את השרשור מתוך תחושה, שהAsp.Net לא היה אמור כלל להציע פקדים לצד לקוח, אלא רק פקודות כמו <% bind %#>. כי במצב הקיים, לעניות דעתי - העבודה של המפתח צמודה מדי לעבודה של הגרפיקאי... במצב התקין אני רואה שגרפיקאי אמור לנפק מן "תבנית" בXHTML והמפתח ממלא אותה בתוכן דרך ממשקים כמו <% bind %#>. מה שקורה כרגע הוא שה ASP.NET מנפק פקדים שונים עבור דפדפנים שונים, והגרפיקאים לא יודעים איזה CSS לכתוב בלי להתייעץ כל רגע אם המפתח... יתכן שאני תועה, עיקר העבודה שלי מתמקדת על WinApps...
 

EdotK

New member
אתה אכן טועה, וasp.net

מאוד מותאם לעבודה עם JS. אין שום "לכלוך" של הnamespaces בJS ע"י asp.net, וקיים מנהל JS ב.net שעוזר לך לנהל את כל קוד הJS שלך בצורה מאוד מכוונת עצמים. תקרא קצת על ClientScriptManager http://msdn2.microsoft.com/en-us/library/3hc29e2a.aspx
 
למעלה