Change the following in the MicrosoftAjax.js
between this line :
case Sys.Browser.InternetExplorer:and this line :
case Sys.Browser.Safari:The code to be used:
Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) {
            if(element.self||element.nodeType===9)
          return new Sys.UI.Point(0,0);
       var d = element.getClientRects();
      if(!d || !d.length) 
        return new Sys.UI.Point(0,0);
 
      var inFrame = false;
      // Get the first bounding rectangle in screen coordinates
      var screenRects = element.getClientRects();
 
      if (!screenRects || !screenRects.length) {
          return new Sys.UI.Point(0,0);
      }
 
      var first = screenRects[0];
      // Delta between client coords and screen coords
      var dLeft = 0;
      var dTop = 0;
 
      try
      {
        inFrame = a.ownerDocument.parentWindow.frameElement;
      }
      catch(ex)
      {
        inFrame = true;
      }
 
      if(!inFrame)
      { 
        var e=a.ownerDocument.parentWindow; 
        var g=e.screenLeft - top.screenLeft - top.document.documentElement.scrollLeft + 2; 
        var h=e.screenTop - top.screenTop - top.document.documentElement.scrollTop + 2; 
        var c=e.frameElement||null; 
        if(c) 
        { 
          var b=c.currentStyle; 
          g+=(c.frameBorder||1) * 2 + (parseInt(b.paddingLeft) || 0) + (parseInt(b.borderLeftWidth) || 0) - a.ownerDocument.documentElement.scrollLeft; 
          h+=(c.frameBorder||1) * 2 + (parseInt(b.paddingTop) || 0) + (parseInt(b.borderTopWidth) || 0) - a.ownerDocument.documentElement.scrollTop; 
        } 
        var f=d[0]; 
        return new Sys.UI.Point(f.left-g,f.top-h); 
      } 
      else 
      { 
        // Get the bounding rectangle in client coords 
        var clientRect = element.getBoundingClientRect(); 
        if (!clientRect)
        { 
          return new Sys.UI.Point(0,0);
        } 
        // Find the minima in screen coords 
        var minLeft = first.left; 
        var minTop = first.top;
 
        for (var i = 1; i < screenRects.length; i++)
        { 
          var r = screenRects[i]; 
          if (r.left < minLeft) 
          { 
            minLeft = r.left; 
          } 
          if (r.top < minTop)
          { 
            minTop = r.top;
          }
 
        }
 
        // Compute the delta between screen and client coords 
        dLeft = minLeft - clientRect.left; 
        dTop = minTop - clientRect.top;
 
        // Subtract 2px, the border of the viewport (It can be changed in IE6 by applying a border style to the HTML element, 
        // but this is not supported by ASP.NET AJAX, and it cannot be changed in IE7.), and also subtract the delta between 
        // screen coords and client coords
 
        var ownerDocument = element.document.documentElement; 
        return new Sys.UI.Point(first.left - 2 - dLeft + ownerDocument.scrollLeft, first.top - 2 - dTop + ownerDocument.scrollTop); 
      } 
    };
        break;
Reference:
here and here
No comments:
Post a Comment