Wednesday, August 26, 2009

FireFox: Error 0x80004005 nsidomnshtmldocument WYSIWYG

Pues bueno, este post es simple. Estaba yo programando el editor WYSIGYG para uno de mis clientes, y cuando estaba probando en FireFox 3.5, me di cuenta que no siempre estaba disponible la edición en el iFrame aunque designMode estaba activado.

Después de indagar en muchos foros sin ningún resultado, me puse a echarle coco por mi mismo y encontré la respuesta: En Firefox, cuando el iFrame tiene contenido cargado desde un archivo mediante el atributo src, designMode no funciona hasta que este totalmente cargado el documento del iFrame. Es decir, si se activa el designMode pero el documento dentro del iFrame no ha terminado de cargarse, designMode no funciona.

Esto lo resolvi de la siguiente forma:

if(detectamos si es firefox){
document.getElementById('id_del_iframe').contentWindow.onload = function(){
this.document.designMode = "on";
}
} else {
//Hacemos lo necesario para IE
}


Asi de simple hacemos que el designMode se active hasta que el documento del iFrame haya sido cargado.

1 comment:

  1. Ese error tambien puede ocurrir por el mime type. Yo tuve el mismo error cuando intentaba modificar un xhtml, pero la causa fue otra. Si el fichero es cargado desde el filesystem y no desde un webserver, ff no tiene manera de obtener el content-type que siempre envia por ej. Apache. Por lo antes mencionado, midas (Spec. del Design Mode de Firefox) toma la extension como tipo y si esta no es html lo considera como application. En conclusion, el consejo es que la extension sea .htm o .html siempre y cuando sea un archivo local.

    ReplyDelete