El tema es cargar en el marco principal de un frameset un documento distinto al que está especificado dentro del propio frameset y/o que además salte a un anchor determinado.
Si tenemos un frameset en el cual se han definido dos marcos, en uno carga menu.html y en el otro principal.html y queremos que desde un link se cargue este frameset pero que en vez de cargar principal.html como está definido en el código del frameset se cargue otro documento, por ejemplo pagina2.html habremos de poner un script de control que se encargue de averiguar si queremos que se cargue automáticamente otro documento en el marco principal. El script de control lo pondremos dentro del documento del menú del frameset que ha de realizar el cambio.
El script es el siguiente:
Código:
<script type="text/javascript">
<!--
/*script por tunait!. Favor de mantener el crédito al autor, gracias*/
var marco = "mainFrame";
var pag, anc,dir, pa = parent.location.search, pat = /pag|anc/
if(pa.length > 1){
pa = pa.substr(1).split("&");
for(m=0; m<pa.length; m++){
if(pat.test(pa[m].substr(0,3))){
eval(pa[m].split("=")[0] + "= '" + pa[m].split("=")[1] + "'");
}
}
if(pag || anc){
anc = anc ? '#' + anc : ''
dir = pag ? pag + anc : anc ? anc : false
}
if(dir){
eval('parent.' + marco + '.location.href = dir;');
}
}
//-->
</script>
En la segunda línea del script hay que definir el nombre del marco en donde se va a cargar el documento
var marco = "mainFrame";
Para que esto funcione hay que indicar al link que cargue el frameset que queremos que haga el cambio de documento enviando un parámetro en la url
el link llamará al frameset pasando el parámetro
pag con la página a cargar.
Si se quiere que cargue pagina1.html se le linka a frameset.html?pag=pagina.html
Si además se quiere que salte a un anchor concreto dentro de ese documento se le envía un segundo parámetro
anc con el nombre del anchor
frameset.html?pag=pagina.html&anc=uno
<a href="frameset.html?pag=pagina.html&anc=uno"> link al frameset </a>
Eso cargará el frameset con pagina.html a la altura del anchor uno en el frame principal en lugar de principal.html
Avísame si no te queda claro o déjame saber si te fue bien
Un saludo