2011-05-03 16 views
11

¿Cómo puedo cambiar el tamaño de fuente a 30px (por ejemplo) usando document.execCommand?document.execCommand() FontSize en píxeles?

Este:

document.execCommand("fontSize", false, "30px"); 

no funciona, porque en tercera argumento de la función execCommand, sólo me permite introducir un valor entre e incluyendo 1 a 7.

Respuesta

16

Es una limitación de el comando FontSize. Hay varias opciones que se me ocurren:

  • Se puede usar una clase CSS lugar y utilizar el módulo CSS class applier de mi biblioteca Rangy;
  • Puede usar un método Hacky, como llamar al document.execCommand("fontSize", false, "7"); y luego encontrar los elementos que el comando ha creado y cambiarlos según sea necesario. Ver ejemplo: http://jsfiddle.net/S3ctN/. Esto obviamente depende de que no haya otros elementos <font> con el tamaño 7 en el documento y también se basa en el navegador que usa <font> elementos para el tamaño de fuente, que parece que todos ellos hacen.
+2

Sí. La segunda respuesta es buena idea! http://pastebin.com/6r4pkmNV – bordeux

6

Como segunda respuesta, sugiera simplemente ejecutar algunos jquery después de execcommand y reemplace el marcado con el suyo.

Simplemente reemplace elem con su elemento y edite el tamaño de fuente con el valor deseado.

jQuery("font[size]", elem).removeAttr("size").css("font-size", "10px"); 
8

Función

var execFontSize = function (size, unit) { 
    var spanString = $('<span/>', { 
     'text': document.getSelection() 
    }).css('font-size', size + unit).prop('outerHTML'); 

    document.execCommand('insertHTML', false, spanString); 
}; 

Ejecutar

execFontSize(30, 'px'); 
+0

Esto funciona en mozilla firefox, pero no funciona en ie –