En primer lugar, iframes y jsonp no son mutuamente excluyentes: uno es un medio de representación, el otro es un medio de comunicación.
Su elección es más bien entre la inclusión en el documento (es decir, la creación del widget dentro del DOM del host) o la inclusión del iframe (que tiene un nuevo DOM separado para el widget).
La ventaja de un iframe es sandboxing: no hay colisión entre su widget y el javascript y css del host. Eso significa que usted puede de manera segura:
- uso/definir cualquier librería javascript desea
- un uso simple código html junto con las reglas CSS simples (que es una ventaja clara para el mantenimiento)
En cuanto a la inconvenientes:
- un iframe es grueso y resistente y puede retrasar seriamente la página de acogida representación
- el iframe se contras también ume mucha más memoria y recursos, lo que puede ser un problema si la página de acogida está dirigidos a los móviles
Por lo tanto, si es razonable asumir las personas que utilizan el widget estarán dispuestos a "adaptar" sus páginas para ello, ir a la forma de documento. Si no, usa un iframe pero entiende los límites.
En cuanto a los problemas de SEO, siempre que cree dinámicamente el widget (ya sea en el documento o con un iframe), los motores de búsqueda no lo verán. No sé si eso es lo que quiere, pero eso es lo que se obtiene;)
En cuanto al rendimiento, un marco flotante no necesariamente proporciona ninguna más sobrecarga carga que JSONP (y de hecho, muchos proporcionan menos sobrecarga). Un iframe se puede cargar de forma asincrónica, mientras que los widgets basados en JSONp pueden requerir que la página se cargue por completo y luego agregar referencias a recursos externos, extendiendo la carga de la página. – mattbasta
Trabajé con una gran cantidad de proveedores de anuncios, y puedo garantizarle que la solución que implica iframes es un factor determinante del rendimiento. Hay una diferencia entre el tiempo que tardará el widget en cargarse (por ejemplo, si necesita que el documento esté listo) y el tiempo que le tomará a la página de host renderizar y ser utilizable. Si lo que estaba implicando sobre JSONP era cierto, entonces nadie aconsejaría la carga de scripts dinámicos como una solución para el rápido procesamiento de páginas. –