2009-04-20 18 views
14

Supongamos que tengo algunas fichas (ficha por ejemplo jQuery) y quiero cargar dinámicamente alguna página en cada pestaña, que pueda hacer de dos manerasiframes vs Ajax

  1. pestañas usar jQuery ajax (básicamente llenando div con datos de ajax) o
  2. Cada pestaña puede contener un iframe y una página cargada en eso.

Q1. No veo diferencia entre dos enfoques para el usuario, ¿verdad?

Q2. Creo que iframe way es mejor porque iframe puede cargar cualquier página, pero a veces la carga de datos ajax en div puede no funcionar como se esperaba.

+1

Buena pregunta .. –

Respuesta

6

Por un lado, tener un error en una página incluida (o llamada AJAX) es probablemente mejor para manejar con el enfoque ajax. Con iframes, obtendrá un feo error 404 o 500 en el medio de su página. Pero con ajax puede detectar el error y mostrar un mensaje de error más fácil de usar.

También depende de qué datos va a cargar en su página. Si controla el html que se está cargando, puede evitar o solucionar cualquier problema de visualización que pueda surgir. Si necesita cargar una página fuera de su control, iframes sería mejor (o necesario).

También puede haber problemas de accesibilidad que participan en uno u otro enfoque, pero no estoy lo suficientemente familiarizado con eso para determinar qué método funciona mejor con los lectores de pantalla, etc.

1

Si las páginas son su contenido, y se puede controla las hojas de estilo y todo a lo que acceden cada una ... luego ve con la opción número uno. Puede diseñar cosas para que no tenga que recuperar contenido compartido más de una vez.

Si las páginas están fuera de su control (sitios externos, etc.), luego cargarlos en iFrames. No tendrá que preocuparse por las páginas que se procesen correctamente, etc.

0

Con iframes, puede encontrarse con problemas de barra de desplazamiento si el contenido se carga desde un sitio externo y el ancho y alto no se conocen de antemano. Con ajax y manipulación de DOM, no tendrás este problema.

Esta es la única razón por la que descargué iFrames en un caso particular. La solución muy hacky para informar el ancho y la altura de un sitio remoto cargado en un iframe, simplemente no valía la pena.

+0

¿Qué pasa si smoeone conoce el ancho y ancho del iframe? –

0

Al mezclar iframe y ajax, si la página de carga (el iframe de la página intenta cargar) no responde inmediatamente de forma que se produjo un bloque blanco vacío, iframe podría detener otras solicitudes ajax en la mayoría de los navegadores debido a la representación.

Por otro lado, si el iframe es más potente, podría tener montones de armazones especialmente con el fondo transparente y sin preocuparse por su ancho o alturas, y parecerá exactamente igual que la misma página sin marcos.

0

Tenga en cuenta dónde está el contenido de su fuente. Si está en su dominio, puede usar iframes o ajax calls. Pero si se trata de un dominio diferente, no se puede usar ajax debido a su protección "cross-site-scripting".

creo que es el aspecto principal de la elección entre los marcos flotantes y las llamadas ajax.

+0

Hay una forma de evitar esto usando Access-Control-Allow-Origin, por ejemplo, en Java se puede establecer: 'response.addHeader (" Access-Control-Allow-Origin " , "*"); '. – Ithar

+1

@Ithar: Eso es verdad. Pero luego asume que tiene control en el código del lado del servidor que proporciona contenido a su Pestaña. –