Foros del Web » Programando para Internet » Javascript »

Es posible la comunicación entre dos paginas html dentro el mismo server mediante Js?

Estas en el tema de Es posible la comunicación entre dos paginas html dentro el mismo server mediante Js? en el foro de Javascript en Foros del Web. Buenas! Tengo una duda, si dentro mi index tengo un iframe que es una pagina html dentro de mi mismo server , y quiero que ...
  #1 (permalink)  
Antiguo 12/12/2012, 03:49
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Es posible la comunicación entre dos paginas html dentro el mismo server mediante Js?

Buenas!

Tengo una duda, si dentro mi index tengo un iframe que es una pagina html dentro de mi mismo server, y quiero que un script Javascript del index inicie un evento dentro del iframe que es como ya he dicho una pagina mas html dentro de mi server?

Obviamente los scripts Js están incluidos en ambas paginas mediante un src, pero para modificar clases o id ya es distinto, alguien me saca de dudas? es posible?

En realidad no es un Iframe, utilizo la propiedad <Object></object> (como w3c recomienda) en vez del <iframe></frame>

he aqui como declaro el objeto: <object type="text/html" data="Menu.html" id="IframePortada" ></object>

Ps. he probado con esto, pero no consigo que funcione :

Código Javascript:
Ver original
  1. window.frames.IframePortada.document.getElementById('MiIDdentroDelIframe').className = ('LaClaseDelIframeQuequieroAñadirAlId');

*IframePortada es el iframe que quiero modificar, su ID

Última edición por Albuss; 12/12/2012 a las 04:32
  #2 (permalink)  
Antiguo 12/12/2012, 09:02
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 9 meses
Puntos: 1012
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

hace tiempo lo intenté y no fui capaz. evidentemente no puedes accesarlo usando la propiedad frame, has de usar getElementById() o getElementsByTagName().

si usas la consola, verás que se crea un nodo #document y dentro de éste, está el contenido. ahí me quedé por que no supe como acceder
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 12/12/2012, 09:17
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Para la mayoría de los navegadores contentDocument va a servir, desconozco si hay alguna opción para Internet Explorer (en versiones anteriores)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 12/12/2012, 09:19
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Es que encontre una respuesta en este mismo foro donde se afirmaba que si era posible, pero no me funciona.

Cita:
Iniciado por Saruman Ver Mensaje
window.frames['nombre_frame'].document.getElementById("nombre_div_dentro_del_if rame").style.padding = '10px';

saludos
Mi objeto Object funciona en la practica como un iframe.
  #5 (permalink)  
Antiguo 12/12/2012, 09:20
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Cita:
Iniciado por David Ver Mensaje
Para la mayoría de los navegadores contentDocument va a servir, desconozco si hay alguna opción para Internet Explorer (en versiones anteriores)
A que nodo se lo aplico ? a la id del object?
  #6 (permalink)  
Antiguo 12/12/2012, 09:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Sí, al object:
Código Javascript:
Ver original
  1. document.getElementById("id_del_object").contentDocument
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 12/12/2012, 09:35
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

el debugger me tira este error : TypeError: Cannot read property 'contentDocument' of null

he utilizado esta sintaxis :

Código Javascript:
Ver original
  1. function CambiarClaseDesdeFueraDelIframe(){
  2.    
  3. RutaIframe=window.document.getElementById("framePortada").contentDocument;
  4.    
  5. RutaIframe.document.getElementById('IdDelDiv').className = ('ClaseQueLeQuieroAñadir'); 
  6.     }
  #8 (permalink)  
Antiguo 12/12/2012, 09:39
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

¿El id no era IframePortada?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 12/12/2012, 09:40
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Perdón, lo he transcrito mal, si, el id es "IframePortada", me sigue tirando el mismo error. Uncaught TypeError: Cannot read property 'contentDocument' of null
  #10 (permalink)  
Antiguo 12/12/2012, 09:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Por un lado, en RutaIframe.document el document ya sobra, no debería estar. Pero el error parece indicarte que no se está obteniendo el elemento object.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 12/12/2012, 09:47
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

El object es el que posteé arriba,

Código HTML:
Ver original
  1. <object type="text/html" data="Menu.html" id="IframePortada" ></object>

El script JS esta incluido mediante src tanto en el index como en Menu.html (el frame), lo único que no esta incluido en ambas paginas es el documento CSS que tiene tanto el id como la clase que quiero aplicar. supongo que habria que indicar de algna forma que obtuviera primero la id y la clase y luego la aplicase , o por el contrario cuando guardo RutaIframe=window.document.getElementById("framePortada").con tentDocument; ya obtiene el id y la clase?
  #12 (permalink)  
Antiguo 12/12/2012, 10:15
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

He cambiado algunas cosas y he conseguido "pasar" el error anterior, ahora puedo guardar correctamente la variable RutaIframepero ahora tengo algunos problemas nuevos ...

el debugger me envia esto :

Unsafe JavaScript attempt to access frame with URL file:///F:/Vodoad/Menu.html from frame with URL file:///F:/Vodoad/index.html. Domains, protocols and ports must match.

Uncaught TypeError: Cannot call method 'getElementById' of null

La función sigue siendo igual :

Código Javascript:
Ver original
  1. RutaIframe = document.getElementById("iframePortada").contentDocument;
  2.    
  3.     RutaIframe.getElementById('IDdentrodelIframe').className = ('ClaseQueQuieroAñadir');
  #13 (permalink)  
Antiguo 12/12/2012, 10:19
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Es por la política del mismo origen. Tendrás que usar un servidor web en tu máquina local para probarlo, en lugar de acceder a los archivos .html como archivos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 12/12/2012, 10:24
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Lo estoy probando desde un server, el mismo en el que hosteo mi proyecto, lo que me preocupa es que no pueda obtener la clase, ya que esta en un src que solo esta declarado dentro del cuerpo del Objec (Del frame).


No seria mas simple, sabiendo que ambos documentos comparten el mismo archivo de texto que contiene los scripts Js, que un evento dentro del index inicie otro evento dentro del Object?


Aunque me huelo que esta pregunta es redundante, aun me parece un poco complicado el objecto Object de html5, y no se muy bien bajo que propiedades opera.
  #15 (permalink)  
Antiguo 12/12/2012, 11:41
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Cita:
Iniciado por Albuss Ver Mensaje
Lo estoy probando desde un server, el mismo en el que hosteo mi proyecto, lo que me preocupa es que no pueda obtener la clase, ya que esta en un src que solo esta declarado dentro del cuerpo del Objec (Del frame).


No seria mas simple, sabiendo que ambos documentos comparten el mismo archivo de texto que contiene los scripts Js, que un evento dentro del index inicie otro evento dentro del Object?


Aunque me huelo que esta pregunta es redundante, aun me parece un poco complicado el objecto Object de html5, y no se muy bien bajo que propiedades opera.
Si @albuss, tiene un comportamiento muy particular para ciertas cosas, decididamente usaría un iframe ó ajax. De todas maneras hay un método alternativo para lograr la comunicación, algo rebuscado si se quiere (nos valemos de una script auxiliar que recibe prámetros por get), pero ahi va.
Como explicarlo es un poco dificil, dejo un link con diferentes variantes
http://foros.emprear.com/object/object-iframe/

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #16 (permalink)  
Antiguo 12/12/2012, 11:52
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Muchas gracias por el aporte!
  #17 (permalink)  
Antiguo 12/12/2012, 15:39
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 9 meses
Puntos: 1012
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

emprear me ha dado la idea
Cita:
<object type="text/html" data="Menu.html?css=LaClaseDelIframeQuequieroAñadirAlId" id="IframePortada" ></object>
en Menu.html
Cita:
<style type="text/css">
.LaClaseDelIframeQuequieroAñadirAlId {
color: red;
}
</style>
<script type="text/javascript">
function fnc() {
document.getElementsByClassName('elemento')[n].className = window.location.search.split('=')[1];
}

window.onload = function() {fnc();};
</script>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #18 (permalink)  
Antiguo 12/12/2012, 17:22
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 2 meses
Puntos: 30
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

Una gran idea, pero finalmente he optado por utilizar ajax, pasar datos por get entre ficheros para que los lea JS tiene fallas de seguridad según he leido.
  #19 (permalink)  
Antiguo 12/12/2012, 17:37
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 9 meses
Puntos: 1012
Respuesta: Es posible la comunicación entre dos paginas html dentro el mismo server m

creo que te refieres a ataques xss. en este caso no, puesto que la url la creas tú. si te va bien ajax, perfecto
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: comunicacion, distintos, documentos, html, iframe
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 08:39.