Monday, December 28, 2009

Access is denied in Ajax Control Toolkit 1

Here's what you have to do.
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: