tables sirve que para origin obtener crear javascript html iframe cross-domain hashchange

sirve - window location origin javascript



ComunicaciĆ³n de cambio hash entre dominios (2)

Tenga en cuenta los siguientes dos dominios: domain1.com y domain2.

Desde domain1 abro un iframe que apunta a domain2.

Ahora, quiero que estos muchachos se comuniquen entre sí, lo cual he logrado con éxito al aplicar hash events event en ambos dominios.

De esta forma, el hash en la ventana principal (dominio1) se activará si domain2 llama a parent.location con un nuevo hash. Además, el evento de cambio de hash se desencadena en el iframe si I desde el padre cambia su atributo src a un nuevo hash.

Esto funciona genial!

Aquí viene el problema:

La funcionalidad de atrás y adelante en el navegador se arruina. En pocas palabras, al crear dos instancias de hash, se debe hacer clic dos veces en el botón de navegación del navegador para obtener el hash principal, ya que primero tiene que pasar por el hash del iframe.

¿Cómo puedo comunicarme con un iframe multidominio de 2 vías sin atornillar el objeto del historial?

¡Gracias!


Use easyXDM , es una biblioteca de JavaScript que hace todo el trabajo por usted, permitiéndole hacer comunicación entre dominios y RPC en todos los navegadores, incluido IE6.

Esto no usará HashTransport para ninguno de los navegadores actuales (ni siquiera IE6), por lo que no cambiará el historial.

No encontrarás nada mejor ..

Puede leer sobre algunos de sus trabajos internos en este artículo de Script Junkie , o ir directamente al archivo léame en github


Otra técnica para las comunicaciones entre dominios es (ab) usar window.name . Requiere un iframe originalmente para tener un src de dominio mismo inicialmente, después del cual se mueve a otro dominio que establece window.name y luego retrocede a la fuente original (paso atrás en el historial). La idea es que window.name no cambie a menos que esté explícitamente configurado, esto significa que puede transferir datos de window.name cruzada de dominio.

Esta técnica se describe con más detalle en:
- http://skysanders.net/subtext/archive/2010/10/11/leveraging-window.name-transport-for-secure-and-efficient-cross-domain-communications.aspx
- http://jectbd.com/?p=611

Asegúrese de elegir la implementación que evita hacer clic en los sonidos en IE.

Desafortunadamente, todavía se entromete con su historia, pero da un paso hacia adelante y luego hacia atrás al punto histórico en el que estaba. Sin embargo, un gran beneficio es que no es necesario analizar y codificar cadenas de URI, pero puede usar JSON de inmediato.

Usando JSON lib por ejemplo

// access window.name from parent frame // note: only when iframe stepped back to same domain. var data = JSON.parse( iframe.contentWindow.name ); // set child frame name // note: only when iframe stepped back to same domain. iframe.contentWindow.name = JSON.stringify( { foo : "bar" } ); // to JSON string // set own name ( child frame ) window.name = JSON.stringify( { foo : "bar" } ); // to JSON string

La técnica de cookies también es viable; para ambas técnicas, debe realizar solicitudes ajax en el iframe de destino si desea evitar cambios en el historial pero aún así requiere la solicitud http. asi que:

  1. Enviar datos a iframe x (usando la técnica cookie o window.name)
  2. Captura datos con poller en iframe x
  3. Realice solicitudes ajax en iframe x.
  4. Enviar datos de nuevo a iframe y (usando la técnica cookie o window.name)
  5. Captura datos con poller en iframe y
  6. Haz el hokey pokey.

Cualquier actualización de página (httprequest) o cambio de URL actualizará el historial (excepto para las versiones anteriores o todas las de IE), por lo que se necesita más código, por desgracia.