Foros del Web » Programando para Internet » Javascript »

frames y javascript

Estas en el tema de frames y javascript en el foro de Javascript en Foros del Web. Buenas madrugadas a todos, hace unos días se me ocurrió hacer unas pruebas para tratar de acceder a los objetos DOM de los frames y ...
  #1 (permalink)  
Antiguo 12/06/2013, 23:13
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 12 años, 7 meses
Puntos: 8
frames y javascript

Buenas madrugadas a todos,

hace unos días se me ocurrió hacer unas pruebas para tratar de acceder a los objetos DOM de los frames y resulta que ningún código que e probado me funciona...

probe con estos codigos para tratar de acceder al id de un button y registrar un evento click en el cual me iba a dar un alert() diciendo que de que el botton fue presionado..

Código Javascript:
Ver original
  1. window.parent.frames['nombre de frame'].document.getElementById("nomID");
  2. window.parent.frames[0].document.getElementById("nomID");
  3.  
  4. window.frames["nombre"].document.getElementById("nomID");
  5. window.self.frames["nombre"].document.getElementById("nomID");
  6. window.top.frames["nombre"].document.getElementById("nomID");

esos fueron los codigos que probe los puse tanto en frame1 como en frame2 que son el nombre de los dos frames con los que estoy haciendo la prueba...
tambien copie cada uno de esos codigos en la pagina index.html que contiene los frame y tampoco me funciono... :S

de que manera se puede acceder a los id de los objetos de los frames??

a los que me puedan ayudar con esta preguntas se los agradezco de ante mano
  #2 (permalink)  
Antiguo 13/06/2013, 03:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: frames y javascript

Te aconsejaria que no pierdas el tiempo con frames.... ajax y divs permiten cosas mucho mejores.

Pero te paso un ejemplo

index.htm

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
  2. <script language="JavaScript" type="text/JavaScript">
  3. function copiaTexto(){
  4.     frames['mainFrame'].document.getElementById("retexto").innerHTML=frames['leftFrame'].document.getElementById("texto").innerHTML;
  5. }
  6. <title>Documento sin t&iacute;tulo</title>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  8. </head>
  9. <frameset cols="200,*" frameborder="NO" border="0" framespacing="0">
  10.   <frame src="frame1.htm" name="leftFrame" id="leftFrame" scrolling="NO" noresize>
  11.   <frame src="frame2.htm" name="mainFrame" id="mainFrame">
  12. </frameset>
  13. <noframes><body>
  14.  
  15. </body></noframes>
  16. </html>

frame1.htm

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. </head>
  5. <span id="texto">Aquí dice algo</span>
  6. </body>
  7. </html>


frame2.htm

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. </head>
  5.  
  6. <input name="botCopia" type="button" id="botCopia" value="Copia" onClick="parent.copiaTexto()">
  7. <span id="retexto">Se copiará aquí</span>
  8. </body>
  9. </html>
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 13/06/2013, 04:04
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: frames y javascript

Hola:

Hay una restricción a tener en cuenta. Si el dominio de los frames (la url que muestran) es distinta, no puedes acceder de uno a otro. Para que funcione, los src de los frame deben pertenecer al mismo dominio y la página principal también.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 13/06/2013, 07:00
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 12 años, 7 meses
Puntos: 8
Respuesta: frames y javascript

Cita:
Iniciado por quimfv Ver Mensaje
Te aconsejaria que no pierdas el tiempo con frames.... ajax y divs permiten cosas mucho mejores.

Pero te paso un ejemplo

index.htm

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
  2. <script language="JavaScript" type="text/JavaScript">
  3. function copiaTexto(){
  4.     frames['mainFrame'].document.getElementById("retexto").innerHTML=frames['leftFrame'].document.getElementById("texto").innerHTML;
  5. }
  6. <title>Documento sin t&iacute;tulo</title>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  8. </head>
  9. <frameset cols="200,*" frameborder="NO" border="0" framespacing="0">
  10.   <frame src="frame1.htm" name="leftFrame" id="leftFrame" scrolling="NO" noresize>
  11.   <frame src="frame2.htm" name="mainFrame" id="mainFrame">
  12. </frameset>
  13. <noframes><body>
  14.  
  15. </body></noframes>
  16. </html>

frame1.htm

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. </head>
  5. <span id="texto">Aquí dice algo</span>
  6. </body>
  7. </html>


frame2.htm

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <title>Documento sin t&iacute;tulo</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. </head>
  5.  
  6. <input name="botCopia" type="button" id="botCopia" value="Copia" onClick="parent.copiaTexto()">
  7. <span id="retexto">Se copiará aquí</span>
  8. </body>
  9. </html>


Gracias por tu respuesta...

los códigos los copie y los pegue tal cual y no me funcionaron... el texto no se copia lo probé en chrome y en mozilla, la consola de errores de mozilla me dice que la propiedad document es indefinida...

y si estoy consiente que con div y ajax se puedes hacer cosas mejores pero esta ves lo estaba haciendo con frames con la intencion de tener el conocimiento de acceder al DOM de los frames pero por lo que veo como que no se puede por que e probado la mayoría de los códigos que e visto en este foro y googleando pero ninguno funciona simplemente no puedo acceder ni siquiera a un ID de un frame
  #5 (permalink)  
Antiguo 13/06/2013, 07:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: frames y javascript

A mi me funciona??? Con FF y IE!!! Pero ahora veo que con Chrome no?!?!?

Chrome dice "
Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match.
"

Habria que darle unas vueltas pero se puede hacer... siempre que los ficheros que se muestran en cada frame sean del mismo dominio como bien te ha dicho @chuidiang.

(Me ha funcionado incluso con el script fuera del head tal y como lo he puesto, eso no seria muy correcto claro)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 13/06/2013 a las 07:21

Etiquetas: frames, funcion, html
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 20:27.