2010-05-20 6 views
5

Me pregunto si es posible utilizar jQuery para cambiar todas las etiquetas <object> en un sitio de etiquetas cuando se carga en IE 8 y por debajo. En esencia, esto permitiría que la página sea XHTML 1.1 válida y no tenga que estar codificada dos veces todo el tiempo, eliminando la necesidad de pasar tanto tiempo enfocándose en navegadores no estándar. necesitaríaUsando jQuery para cambiar todas las instancias de <object> a <iframe> para el apoyo de IE

El atributo data= que ser cambiado a src=, me gustaría insertar frameborder="0", y todos los style valores para la etiqueta <object> también tendría que ser establecido para la etiqueta .

Mi objetivo aquí es no para crear un debate sobre s vs <object> s, simplemente creo que esto sería un gran ahorro de Tmie, y fomentar, el estricto xhtml prácticas de codificación adecuados.

¡Gracias por cualquier entrada!

+0

Se puede realmente llamar a la estricta XHTML salida si no se ajusta hasta el lado del cliente modificado? –

+0

@David, quiere hacerlo al revés: quiere generar HTML estricto y luego realizar las correcciones de IE6 después de la carga. –

Respuesta

1

Para ver un resumen básico sobre cómo cambiar el tipo de elemento, vea jQuery convert DOM element to different type (no sé si funcionará correctamente en XHTML, pero puede que sí), pero no creo que sea una buena idea. Puedo ver que causa retrasos en las máquinas más antiguas (en las que se ejecuta IE6) y, obviamente, no funcionará cuando JavaScript esté desactivado. Todo eso para lograr un código válido? No es una buena idea IMO.

Antes de hacer eso, si el código tiene que ser válido bajo cualquier circunstancia, consideraría servir código diferente a IE6 en el servidor.

+0

Por lo que estoy haciendo, la falta de soporte de JavaScript no es un problema. Además, he descubierto que las probabilidades de tener un dispositivo sin JavaScript ahora son muy escasas. Todos los teléfonos nuevos en los últimos años soportan JavaScript y la mayoría de las personas no mantienen un teléfono por más de 2 años. Revisaré el enlace que me enviaste, gracias. – geckomist

1

No sé si puede cambiar tipo de elemento DOM, pero siempre puede crear un nuevo elemento IFRAME y eliminar el elemento anterior en su lugar.

Algo así como (precaución: no probado!)

$("object").each(function() { 
    var obj = $(this); 
    $("<iframe/>").attr({ 
     src: obj.attr("data"), 
     style: obj.attr("style"), 
     frameborder: 0 
    }) 
    .after(obj); 

    obj.remove(); 
}); 
+0

Tengo problemas para probar tu código. No está colocando el iframe creado después del objeto. Entonces, después de eliminar el objeto, no queda nada. – geckomist

+0

Debería arreglarse ahora. – ignaZ

Cuestiones relacionadas