tengo 2 marcos en una página como esta (home.html)Cómo acceder bastidor (no iframe) contenidos de jQuery
<frameset rows="50%, 50%">
<frame id="treeContent" src="treeContent.html" />
<frame id="treeStatus" src="treeStatus.html" />
</frameset>
y luego en un cuadro (treeStatus.html) I tener algo como
<body style="margin: 0px">
<div id="statusText">Status bar for Tree</div>
</body>
que quiero de la ventana superior para manipular el div se encuentra en el marco secundario a través de jQuery (por ejemplo, mostrar y ocultar).
he visto severalquestionslikethis y sugieren la siguiente
$(document).ready(function(){
$('#treeStatus').contents().find("#statusText").hide();
});
No sé si esto funciona con iframes, pero en mi caso en el que tengo fotogramas simples no parece funcionar. El código se coloca en el interior home.html
Aquí es un poco de salida de la consola de Firebug
>>> $('#treeStatus')
[frame#treeStatus]
>>> $('#treeStatus').contents()
[]
>>> $('#treeStatus').children()
[]
Entonces, ¿cómo puedo acceder a los elementos del marco del marco superior? ¿Me estoy perdiendo de algo?
respuesta
Después de combinar ambas respuestas aquí, la forma correcta es
$('#statusText',top.frames["treeStatus"].document).hide();
Para que esto funcione el marco debe tener el nombre atribuyen además de la identificación, así:
<frameset rows="50%, 50%">
<frame id="treeContent" src="treeContent.html" />
<frame name="treeStatus" id="treeStatus" src="treeStatus.html" />
</frameset>
Sólo una nota : ¿por qué usar frames cuando podría usar 'position: fixed' para agregar una barra de estado (o log sugerido por el tamaño) siempre en la parte inferior de la ventana gráfica ... ¿es compatible con un navegador antiguo? – alex
@alex esto es solo un ejemplo mínimo que creé para stackoverflow. La aplicación real es completamente diferente. Es más complicado que simples barras de estado. Los marcos son un requisito (¡No preguntes!). – kazanaki
Bien, sin preocupaciones. Solo pensé que agregaría eso (algunas personas no saben acerca de 'position: fixed'). – alex