Observando con el inspector DOM del FireBug en FireFox he descubierto que el iframe que crea tiene varias variables definidas. En concreto, una llamada "f", que se define tras cargarse el documento y que contiene la URL del parent codificada.
Así pues, he escrito un pequeño código JavaScript que recoge
// Manejador de eventos
function _addEvent(obj,type,fn) {
obj = self.getElementById( obj );
if( !obj || typeof obj != 'object' || !type || typeof type != 'string' || !fn || typeof fn != 'function' || !obj ) return false;
if (typeof obj.addEventListener != 'undefined' ) return obj.addEventListener( type, fn, false );
else if ( typeof obj.attachEvent != 'undefined' ) return obj.attachEvent( "on"+type, fn );
else return false;
}
// Extrae parametros de la URL
function _urlParams( u, n ){
var regex = new RegExp( "[\\?&]"+n+"=([^]*)" );
var results = regex.exec( u );
if( results == null ) return "";
else return results[1];
}
var dir = _urlParams( location.href, "parent" );
if( dir == "" ) {
var dir = "DESCONOCIDO";
try { dir = parent.location.href; } catch (e){
_addEvent(window,"load",function() {
if( typeof f == 'string' && (f.substring(0, 9) == "http%3A//" || f.substring(0, 10) == "https%3A//") ) try {
var tmp = f.split('/');
if( tmp[2] == "sites.google.com" || tmp[2] == "www.sites.google.com" ) dir = unescape(f);
} catch (e){ }
} ); // _addEvent END.
}
}
El inconveniente es que la variable dir no estará disponible hasta que se haya cargado la ventana, lo que quiere decir que no podremos usarla para hacer decisiones durante la carga de la página.
Este código está extraído del que se usa en los TagBoards de la web.
Edit: tema del post....
Editado por Daniel el 05/02/2009 a las 22:21:26h.