Iframe + AjaxControlToolkit v1 + IE = Access Denied Cross Domain
Siempre oí hablar del infierno de las DLL pero cuando hablamos de desarrollos web no nos podemos olvidar del infierno de los iFrames.
Cabe decir que este problema lo han solucionado en la nueva versión de AjaxControlToolkit v3 pero para los que tenemos algún proyecto con la versión anterior tenemos una solución para este problema de permisos.
Primero mostraremos gráficamente cual es el problema.

Hemos creado un simple TexBox con un CalendarExtender para seleccionar una fecha del calendario y esta página de ejemplo la llamamos desde un Iframe que se encuentra en otro dominio, como si la llamada fuera desde un cliente ;-).
Un claro ejemplo de un error de acceso de Cross-Domain.
En el Blog de Bertrand Le Roy's nos da una solución para poder solucionar este problema que lo provoca Sys.UI.getLocation al intentar acceder a una propiedad de la página.
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<script type= "text/javascript">
if (Sys.Browser.agent == Sys.Browser.InternetExplorer){
Sys.UI.DomElement.getLocation=function(a){
if(a.self||a.nodeType===9)
return new Sys.UI.Point(0,0);
var b=a.getBoundingClientRect();
if(!b)
return new Sys.UI.Point(0,0);
var c=a.document.documentElement,d=b.left-2+c.scrollLeft,e=b.top-2+c.scrollTop;
try{
var g=a.ownerDocument.parentWindow.frameElement||null;
if(g){
var f=2-(g.frameBorder||1)*2;
d+=f;e+=f
}
}catch(h){}
return new Sys.UI.Point(d,e)};
}
Lo único que tenemos que hacer es sobreescribir Sys.UI.DomElement.getLocation cuando el exploración sea InternetExplorer y evitaremos el tan temido error.

Con esta pequeña modificación ya podemos utilizar nuestro ejemplo dentro de un Iframe desde otro dominio.
Nos hemos reunido nuevamente en el TTT de Microsoft en las oficinas de Madrid, en esta nueva cita nos han puesto al día de los nuevos lanzamientos y sobre todo nos ha servido para mantener el contacto con los otros grupos de usuarios y poder compartir nuestras experiencias.
Para muestra os dejo unas fotos de como ha ido la cita.
Avisamos que algunas de estas imágenes pueden dañar la sensibilidad de algunas personas ;-)


Más fotos en ...
Saludos.
David Salgado evangelista de Microsoft ya nos aviso en el TTT del año pasado, que le rondaba por la cabeza un tema muy curioso que surgió después de un fin de semana practicando deporte (El viejo levantamiento de Vidrio).
Nos habló del Capitán Tomate, definitivamente un fin de semana muy duro.
Hasta ahora teníamos Channel8 donde encontrábamos infinidad de entrevistas y vídeos de eventos, pero en Ingles
.
A partir de ahora nuestro comando Tomate nos ayudara a estar al día con vídeos de entrevistas en español y con aportaciones de la comunidad.
Espero que esta iniciativa tenga mucho éxito.
http://comandotomate.net/
Nos vemos en el Tomate ;-)