Foros del Web » Programando para Internet » Javascript »

Acceder a un DIV dentro de un FRAMESET?

Estas en el tema de Acceder a un DIV dentro de un FRAMESET? en el foro de Javascript en Foros del Web. Hola a todos, necesito ayuda urgentemente sobre como acceder por javascript a un DIV que está dentro de un frameset: Cita: <frameset name ="framePrincipal" id="id_frameset" ...
  #1 (permalink)  
Antiguo 25/05/2009, 05:48
 
Fecha de Ingreso: mayo-2008
Mensajes: 11
Antigüedad: 16 años
Puntos: 0
Acceder a un DIV dentro de un FRAMESET?

Hola a todos,

necesito ayuda urgentemente sobre como acceder por javascript a un DIV que está dentro de un frameset:

Cita:
<frameset name ="framePrincipal" id="id_frameset" frameSpacing="0" cols="220, 70%" border="1" bordercolor=AECBE9 onLoad="load_moviles();">

<div id="div_jwchat">
</div>
</frameset>
Necesito hacerle al DIV un innerHTML. He probado varias opciones, como:

Cita:
top.framePrincipal.document.getElementById('div_jw chat').innerHTML = "<frameset id='leftbar' rows='100%,0,133,99' frameSpacing='0' border='0'> <frame src='roster.html' name='jwc_main' marginwidth='0' marginheight='0' scrolling='no'> <frame src='empty.html' name='jwc_sound' marginwidth='0' marginheight='0' onLoad='soundLoaded()'> <frame src='../documentosToolbar.jsp' name='documentosToolbar' scrolling='no'> <frame src='../integracionToolbar.jsp' name='integracionToolbar' scrolling='no'> </frameset>";
Pero nada, me dice o que no está definido, o que el objeto es nulo.

¿Cómo debo hacerlo? Muchas gracias.
  #2 (permalink)  
Antiguo 25/05/2009, 06:14
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 15 años
Puntos: 19
Respuesta: Acceder a un DIV dentro de un FRAMESET?

Puedes acceder al document del marco?

En FireFox es contentDocument, en el resto es document asecas.

Si estás en un frame y quieres referirte a otro frame es parent.document.getElementsById('id del frame al que me refiero').contentDocument

O terminado en .document para el resto.

Aún así, no deberías usar tantos frames, y deberías, si los usas terminarlos con />.
  #3 (permalink)  
Antiguo 25/05/2009, 07:09
 
Fecha de Ingreso: mayo-2008
Mensajes: 11
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a un DIV dentro de un FRAMESET?

Gracias por tu respuesta antes de nada. Si por mi fuera la verdad es que no usaría ni frames, pero es retocar código ya existente y no me queda otra. Te explico, lo único que quiero es que con javascript se muestren unos frames en caso de que la pantalla tenga una resolución mayor de 480px y si es menor no los muestre.

Para ello tengo este código:
Cita:
function load_moviles()
{
var fs1 = top.document.getElementById('id_frameset');

if (window.screen.width>485)
{
fs1.cols = "100%,0%";
top.framePrincipal.document.getElementById('div_jw chat').innerHTML = "<frameset id='leftbar' rows='100%,0,133,99' frameSpacing='0' border='0'> <frame src='roster.html' name='jwc_main' marginwidth='0' marginheight='0' scrolling='no' /> <frame src='empty.html' name='jwc_sound' marginwidth='0' marginheight='0' onLoad='soundLoaded()' /> <frame src='../documentosToolbar.jsp' name='documentosToolbar' scrolling='no'> <frame src='../integracionToolbar.jsp' name='integracionToolbar' scrolling='no'> </frameset>";
}
}

.....................................

</head>



<frameset name ="framePrincipal" id="id_frameset" frameSpacing="0" cols="220, 70%" border="1" bordercolor=AECBE9 onLoad="load_moviles();">

<div id="div_jwchat">
</div>
<div id="div_buscador">
<frameset rows="100%" border="0">
<frame src="../busca2.jsp" name="Buscador">
</frameset>
</div>

</frameset>


<body>
Your browser must support frames and javascript to use this application. Please refer to our <a href="help.html">online manual</a> for a list of supported browser.
</body>
</html>
Como se puede ver, con top.document.getElementById('id_frameset'); puedo acceder al frame sin problemas, pero al DIV dentro de este frameset no consigo acceder, dandome siempre errores de objeto nulo o no definido.
  #4 (permalink)  
Antiguo 25/05/2009, 07:15
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 15 años
Puntos: 19
Respuesta: Acceder a un DIV dentro de un FRAMESET?

Eso se hace con CSS, haciendo un stylesheet sólo para móviles, creo que es algo así:

<link rel="stylesheet" type="text/css" href="movil.css" media="movil"/>

Si no es movil has de buscarlo en google.

Esto es la llamada a la hoja de estilos que va en el header.
  #5 (permalink)  
Antiguo 25/05/2009, 07:22
 
Fecha de Ingreso: mayo-2008
Mensajes: 11
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a un DIV dentro de un FRAMESET?

Ya, pero el problema es que necesito hacerlo como te indico, además creo que debería ser relativamente sencillo, ya que lo único que hace es un innerHTML en caso de que la resolución sea mayor de la dada. Por ello, el "único" problema es que no se como acceder a ese DIV para hacerle el innerHTML.

Gracias por todo.
  #6 (permalink)  
Antiguo 25/05/2009, 12:51
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 15 años
Puntos: 19
Respuesta: Acceder a un DIV dentro de un FRAMESET?

1. Si me dices que una opción no vale por que sí, no me lo creo. O me explicas por qué o nunca daré la explicación por váilda. No, ahora en serio, por qué no puedes?

2. Siguiendo con tu problema:

Código javascript:
Ver original
  1. var content;
  2. if(!(content=parent.document.getElementById('id_frameset').contentDocument)){
  3.  content=parent.document.getElementById('id_frameset').document;
  4. }
  5. //Este código selecciona contentDocument o document según exista. Mejor que buscar si el
  6. //explorador es mozilla por que hay exploradores basados en mozilla que no pasan mozila
  7. //por agente. Además es más rápido, aunque quizás te resulte lioso
  8. content.getElementById('div_buscador').style.display = 'none';//oculta

Si quieres además eliminarlo, te tienes que buscar un poco más la vida. Nótese que eliminarlo no cambia nada la cantidad de bits que se tienen que bajar. Como no existe un Firebug para el movil (que yo sepa, y el FireBug es un complemento del Firefox que te permite editar la apariencia momentáneamente de una web, a parte de examinar multitud de aspectos de la misma, y por tanto hacer que algo que esté oculto deje de estarlo momentaneamente), no le veo mas utilidad.
  #7 (permalink)  
Antiguo 26/05/2009, 04:15
 
Fecha de Ingreso: mayo-2008
Mensajes: 11
Antigüedad: 16 años
Puntos: 0
Respuesta: Acceder a un DIV dentro de un FRAMESET?

Hola nuevamente,

pues te comento, no puedo porque tendría que rehacer la página y necesito una solución lo más rápida posible.

Por otro lado, he probado haciendo lo siguiente:

Cita:
function load_moviles()
{
var fs1 = top.document.getElementById('id_frameset');
if (window.screen.width>490)
{
var jwc_main = top.document.createElement("frame");
jwc_main.name = "jwc_main";
jwc_main.src = "roster.html"
jwc_main.scrolling = "no";
jwc_main.marginwidth = "0";
jwc_main.marginheight = "0";
var jwc_sound = top.document.createElement("frame");
jwc_main.name = "jwc_sound";
jwc_main.src = "empty.html"
jwc_main.onLoad = "soundLoaded()";
jwc_main.marginwidth = "0";
jwc_main.marginheight = "0";
var documentosToolbar = top.document.createElement("frame");
documentosToolbar.name = "documentosToolbar";
documentosToolbar.src = "../documentosToolbar.jsp"
documentosToolbar.scrolling = "no";
var integracionToolbar = top.document.createElement("frame");
integracionToolbar.name = "integracionToolbar";
integracionToolbar.src = "../integracionToolbar.jsp"
integracionToolbar.scrolling = "no";

var frameset = top.document.getElementById('id_frameset').childNo des[1];
/*while (frameset.childNodes.length > 0) {
frameset.removeChild(frameset.firstChild);
}*/
frameset.cols = null;
frameset.rows = "100%,0,133,99";
frameset.appendChild(jwc_main);
frameset.appendChild(jwc_sound);
frameset.appendChild(documentosToolbar);
frameset.appendChild(integracionToolbar);
}
else
{
fs1.cols="0%, 100%";
}


}
.............

</head>



<frameset id="id_frameset" frameSpacing="0" cols="220, 70%" border="1" bordercolor=AECBE9 onLoad="load_moviles()">
<div id='div_jwchat'>
<frameset id='leftbar' rows='100%,0,133,99' frameSpacing='0' border='0'>

</frameset>
</div>
<div id='div_buscador'>
<frameset rows='100%' border='0'>
<frame src='../busca2.jsp' name='Buscador'>
</frameset>
</div>
</frameset>


<body>
Your browser must support frames and javascript to use this application. Please refer to our <a href="help.html">online manual</a> for a list of supported browser.
</body>
</html>
De esta forma evito cargar los frames que no quiero en el caso que sea un móvil, pero me ha surgido otro problema, no funciona en el IE, no crea los nuevos frames, me deja un frame vacio a la izquierda y el otro que cargo siempre lo muestra correctamente a la derecha.

¿Alguna idea?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:42.