javascript - ejemplo - Accediendo a un elemento fuera del iframe
parent iframe (3)
La comunicación entre un iframe y el documento principal no es posible para recursos de origen cruzado. Solo funcionará si el iframe y la página que lo contiene pertenecen al mismo host, puerto y protocolo, por ejemplo, http://example.com:80/1.html y http://example.com:80/2.html.
Para los recursos de origen cruzado, puede usar window.postMessage
para comunicarse entre los dos, pero esto solo es útil si el navegador admite este método y si tiene control sobre ambos recursos. Hay más información detallada sobre window.postMessage
en la página de MDC: https://developer.mozilla.org/en/DOM/window.postMessage
Editar - suponiendo que ambos recursos son del mismo origen
En el iframe, window.parent se refiere al objeto global del documento principal, no al objeto del documento en sí. Creo que necesitarías usar parent.document.getElementById
Tengo un archivo: 1.html y un iframe dentro de él.
Quiero acceder a un elemento (digamos myelement) que existe en 1.html (fuera de iframe) del iframe .
¿Cómo puedo hacer eso?
Lo intenté:
top.getElementById("myelement")
top.document.getElementById("myelement")
parent.getElementById("myelement")
parent.document.getElementById("myelement")
pero no funcionó !!
Suponiendo que la misma política de origen no sea un problema, puede usar parent.document
para acceder a los elementos y manipularlos.
Demostración aquí , fuente de marco externo aquí , fuente de iframe aquí .
La comunicación entre un iframe y el documento padre no es posible para recursos de origen cruzado
eso está mal de muchas maneras, ni siquiera quiero saber por dónde empezar. Por supuesto, las solicitudes de dominios cruzados y los intercambios de algoritmos tienen una larga historia, están bien documentados y funcionan ahora, uno puede iniciar solicitudes JSON o incluso solicitudes XMLHttp simples a través de JQuery, por ejemplo, incluso puede cargar archivos .js completos. archivos Y inyéctelos en su código; el código de inyección en fuentes remotas necesitará, por supuesto, una interfaz adecuada; uno puede lograr tal cosa a través de la comunicación con las personas responsables, simplemente pregúnteles amablemente y tal vez cooperarán si su proyecto tiene sentido y tiene su uso.
Para responder a la pregunta: el acceso a documentos completos plantearía la necesidad de transferirlo de antemano. Recomendaría XML para ese fin porque el árbol DOM y el XML son casi intercambiables. Cargue el árbol a través de .get ( .ajax para hosts remotos), agréguelo a esto y acceda a él de la manera que desee ... suena fácil y si tiene experiencia, ES FÁCIL. Si alguna vez lees nuevamente "dominio cruzado" y "no es posible" en la misma oración, también podrías ignorar el cartel: hay muchas personas que no saben de lo que están hablando ;-)