DCSIMG
Media Player, Firefox ובאג מעצבן. - מאחורי המסך

מאחורי המסך

משה למפרט, על תכנות מתקדם וביצועים ב-Web.

על הבלוג

עוד חדשות

אתרים שיש לי בהם יד ורגל

Media Player, Firefox ובאג מעצבן.

לפני כמה חודשים (או יותר, לא זוכר כבר), port 25 של Microsoft העלו Plug In של Windows Media עבור Firefox. בתור מי שמפעיל אתר חדשות טלוויזיה על בסיס שרת Windows Media, קפצתי על המציאה וחיש קל, התחלתי לשחק עם הרכיב החדש.

הלקוח עובד כמצופה, ולמעט כמה התנהגויות שניצלתי בחלונות ולא יכולתי לנצל בו הוא פעל כהלכה (אחת מהן היא הסתרה של סרגל הלחצנים שלו באמצעות CSS, מכיוון שאחרת לא יופיע הסרגל גם במסך מלא).

כשהגעתי לשלב הפיתוח, הסתבר שהוא לא מגיב לפקודה mp.controls.Play() כמו ב-IE. חמש דקות נוספות של עבודה הראו כי לפקודה mp.controls.play() הוא דווקא כן מגיב, אבל IE דווקא לא.

עוד חצי שעה של נסיונות העלו את התוצאה העקומה הבאה, שדווקא עובדת כהלכה:

mp = document.getElementById('Player');
 try {
    mp.controls.Play() 
} 

catch(e) {
    mp.controls.play();
}

עקום, אבל עובד מצויין. והנה זה פה למי שיחפש את זה בגוגל בהמשך.

תוכן התגובה

Doron Ben-David כתב/ה:

המממ... חשבת לנסות לזהות את סוג הדפדפן, ולכתוב את הקוד בהתאם?

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

לדוגמא:

if(navigator.userAgent.indexOf("Firefox")!=-1){

var versionindex=navigator.userAgent.indexOf("Firefox")+8

if (parseInt(navigator.userAgent.charAt(versionindex))>=1)

alert("You are using Firefox 1.x or above")

}

# October 20, 2007 10:59 PM

Moshe L כתב/ה:

אתה צודק ברמה העקרונית, אבל הבאתי את הקוד שם רק כדוגמא לצורת עבודה העקומה שנדרשת עם האובייקט, בלי סיבה הגיונית אמיתית.

ואם כבר אז כבר - זיהוי אם קיים ה-plugin המתאים:

function CheckFFWMP() {

var is_WMP;

for ( var i in navigator.plugins ) {

var n = navigator.plugins[i].name; //alert(n);

if ( n != null && n.indexOf("Windows Media") >= 0 && n.indexOf("Microsoft") == 0 )

return true;

}

return false;

}

# October 21, 2007 12:38 AM