01 January 2011

DropDownList and div problem at Internet Exploer 6

בעידן בו יש כל כך הרבה דפדפנים, וצריך לתמוך בכולם- העבודה נעשית ארוכה יותר ולא כיפית.
כך גם במקרה הבא:
זוכרים שהיה אי פעם דפדפן IE 6, כן.. גם אני מנסה לשכוח, אבל מה לעשות צריך לתמוך בו עדין.
ישנה בעיה ידועה שDrop Down List (תג select ב Html) באקפלורר 6 תמיד עליון.

לדוגמה, אם אני רציתי ליצור תפריט ומתחתיו ישנו את אותו Drop Down זה מה שקיבלתי:



הפיתרון לבעיה זאת הוא קל. יוצרים ifram (רצויי עם source של דף ריק) באותו גודל של אותו div וifram יהיה מעל ה .Drop Down





<IFRAME id="iframeFixDiv" style="VISIBILITY:hidden; POSITION:absolute;" src="/_LAYOUTS/Test01/Blank.htm" frameBorder="0" scrolling="no">
</IFRAME>


ניקח את אותו ifram במקום כלשהו בדף, וכאשר קוראים לאותו div להופיע, מבצעים את הפונקציה הבאה בjavascript. הפונקציה מקבלת את הID של הdiv והID של הifram).


// Fix IE6 div Display before Drop Down with ifram
function FixIe6DivDisplayDropDown(divID, iframeID)
{ 
  var ieversion = 0;

  if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
    ieversion = new Number(RegExp.$1);
  if (navigator.appName == "Microsoft Internet Explorer" &&
      ieversion < 7)
  {
    var myDiv = document.getElementById(
divID);
    myDiv.style.display = 'block';
    var MyIframe =
    document.getElementById(iframeID);
    MyIframe.style.visibility = 'visible';
    MyIframe.style.display = 'block';
    MyIframe.style.width = myDiv.offsetWidth;
    MyIframe.style.height = myDiv.offsetHeight;
    MyIframe.style.left = myDiv.offsetLeft;
    MyIframe.style.top = myDiv.offsetTop;
  }
}


ואז מקבלים את התוצאה הנחמדה הבאה:


נחמד.. לא?

שנה אזרחית קלילה :)


No comments:

Post a Comment