español - ¿Cómo leer DOM del iframe cargado con una página de otro dominio?
polyfill español (3)
Realmente no. Esto es esencial para la seguridad; de lo contrario, podría abrir mi sitio de banca en línea o correo web y meterse con él.
Puede aflojar un poco la restricción configurando document.domain
, pero el dominio de nivel superior debe ser el mismo.
Puede evitar esta limitación enviando solicitudes a través de su propio servidor (pero no olvide protegerlo, de lo contrario, s [cp] ammers pueden abusar de él)
my.example.com/proxy?url=otherdomain.com/page
¿Hay alguna forma de acceder al DOM del documento en un iframe del documento principal si el documento en el iframe está en otro dominio? Puedo acceder fácilmente si las páginas padre e hijo están en el mismo dominio, pero necesito poder hacerlo cuando estén en dominios diferentes.
Si no, tal vez haya alguna otra forma de LEER el contenido de un iframe (una consideración era crear un control ActiveX, ya que esto sería solo para uso corporativo interno, pero preferiría que fuera compatible con varios navegadores)?
En teoría , puede acceder al contenido del iframe utilizando la propiedad standard content2 contentDocument de DOM. Prácticamente puede haber descubierto que la mayoría de los navegadores niegan el acceso al DOM del documento externo debido a problemas de seguridad. El acceso a DOM AFAIK completo no es posible (aunque puede haber algún ajuste específico del navegador para deshabilitar la verificación del mismo dominio); para el dominio cruzado XHR, un truco popular es rebotar los datos hacia adelante y hacia atrás el iframe y el documento principal utilizando identificadores de fragmento de URL (ver, por ejemplo, este enlace ), puede usar la misma técnica pero:
- el documento cargado en el iframe debe cooperar, y
- no tiene acceso al documento completo de todos modos (puede volver a leer algunos parámetros, o tal vez puede intentar y codificar URL todo el documento, pero eso sería muy feo)
Acabo de encontrar el método postMessage
introducido con HTML5; ya está implementado en un navegador reciente (FF3, IE8 y Safari 4). Permite el intercambio de mensajes entre cualquier objeto de Windows dentro del navegador. Para más detalles, consulte la documentación en MDC y este agradable tutorial de John Resig.