2010-01-21 13 views
6

supongamos que tengo mi navegador carga un iframe con <iframe src="test.html">¿Copia el contenido html de iframe en div (ajax)?

¿Puedo, usando ajax, cargar el contenido de test.html en un div en la página principal html?

Esta idea es mi solución por el hecho de que en realidad estoy tratando de superar la limitación al hacer que ajax se envíe a hosts remotos. El plan es generar la página dinámica con 0 iframe de tamaño que hace una solicitud de informe al host remoto. Luego, después de cargar la página (& iframe content), copiaré el contenido del iframe en un div usando JS.

Consejos son apreciados,

Gracias, Maxim.

Respuesta

2

No, no puedes.

Cuando carga una página de un dominio diferente en el iframe, se vuelve inalcanzable. Ya no puede acceder al contenido del iframe, ya que proviene de un dominio diferente.

Lo único que sé que se puede cargar confiablemente desde un dominio diferente es un script, que JSONP usa.

+0

bummer ... Estaba seguro de que, debido a que puedo hacer kung foo the iframe, todos mis problemas con el ajax están resueltos. Gracias por la explicación. –

+0

@Maxim: Es curioso, en realidad pensé lo mismo el día de hoy, por unos segundos antes de darme cuenta de que no podría alcanzar los datos que había cargado ...:) – Guffa

1

¿Puedo, usando ajax, cargar el contenido de test.html en un div en la página html principal?

Sí (ya que su ejemplo tiene un URI relativo y está en la misma máquina) ...

Esta idea es mi solución para ese hecho de que en realidad estoy tratando de superar la limitación con la fabricación de Ajax envía a hosts remotos.

... y no. Aún no puede leer los datos de los hosts remotos.

0

... puede, sin embargo, diseñar una solicitud AJAX para el host local y recuperar información del servidor remoto (como se describe here).

1

Estoy seguro de que alguien me va a corregir si me equivoco, pero creo que las secuencias de comandos a través de los límites de dominio están restringidas. ¿Lo has probado? Aquí hay una función que puede ayudar.

function insertDivFromFrame(divname, framename) { 
    var frame = document.getElementById(framename); 
    var d = frame.contentWindow || frame.contentDocument; 
    if (oDoc.document) {d = d.document;} 
    document.getElementById('yourdiv').innerHTML = d.body.innerHTML; 
} 

no estoy seguro de que este código funciona ... ver http://xkr.us/articles/dom/iframe-document/ para obtener más ayuda en esto.

0

Si escribe un php/perl/etc. script para generar el contenido de un documento desde otro dominio, le dará acceso a los contenidos, ya que javascript considerará que la página resultante pertenece a su dominio. Si no está familiarizado con los lenguajes de scripting del lado del servidor, estoy seguro de que podrá encontrar un script que lo haga por usted haciendo una simple búsqueda en Google.

Lo mejor de la suerte.

+0

Esto es lo que probablemente terminemos usando Apache HttpClient como un simple proxy directo. Todavía tengo dudas con respecto a una solución de proxy mejor/mejor: proxy de software de aplicaciones web vs. Servlet Container Proxy vs. mod_proxy? –

Cuestiones relacionadas