Ejecutar comandos del navegador con execCommand

 
Como su propio nombre indica este método permite ejecutar comandos.
Principalmente los comandos que permite ejecutar son relativos a la "aplicación" (Salvar, abrir, etc) y a la edición (Copiar, pegar, insertar etiquetas, ...)

En este artículo, nos centraremos en los comandos de "aplicación".


Este método tiene una gran ventaja y un gran inconveniente.
Su gran ventaja es que permite hacer cosas que de otro modo serían imposibles de hacer.
Su gran inconveniente es que fue un método creado por Microsoft a expensas de los estándares, con lo que sólo era compatible con Microsoft Internet Explorer a partir de la versión 4.0, aunque posteriormente ha sido implementado en diversos navegadores, aunque no siempre funcionando de la misma forma, ni los mismos parámetros. Por lo que habría que probarlo en diferentes navegadores y tenerlo en cuenta ala hora de implementarlo.

La sintaxis de este método es la siguiente:

objeto.execCommand(sComando [, bInterfaz_de_usuario] [, Añadido]);

Donde:
sComando (string) Es el comando que dirá la acción a hacer (imprimir, salvar, etc).
bInterfaz_de_usuario (boolean) Si muestra o no el interfaz de usuario en caso de haberlo. Por defecto su valor es false.
Añadido Dependiendo del comando puede recoger un valor u otros (o ninguno).


A continuación mostramos los diferentes valores para sComando, con relación a los tipos de comandos de "aplicación", entre paréntesis la versión de I.E. necesaria para que el comando se ejecute:

document.execCommand("ClearAuthenticationCache");
(6.0 S.P.1 y posteriores) Limpia todas las autenticaciones dadas hasta el momento y guardadas en la cache.


document.execCommand("Open");
(¿4.0 y posteriores?) Abre un dialogo donde puedes escribir la dirección donde quieres ir o el archivo o carpeta que quieres abrir.
Muy parecido a location.href="pagina.htm" y window.open, por lo que recomendamos la utilización de estos antes que de execCommand("Open") por su mayor estandarización.


document.execCommand("SaveAs", false, "nombre_pagina.htm");
(4.0 y posteriores) Hace saltar el dialogo de Guardar Como. Si pasamos el tercer parámetro, será como se llamará la página por defecto


document.execCommand("Print");
(5.5 y posteriores) Hace saltar el dialogo de las opciones de impresión del navegador para que el usuario pueda imprimir la página. Esto también se puede hacer con window.print(), método que puede ser ejecutado desde todos los navegadores, por lo que lo recomendamos antes que execCommand("Print")


document.execCommand('Undo');
(¿5.5 y posteriores?) El comando "deshacer" (Control+z)


document.execCommand('Redo');
(¿5.5 y posteriores?) El comando "rehacer" (Control+y)


document.execCommand('Refresh');
(4.9 y posteriores) Recarga la página, como el botón Actualizar del explorador.
window.location.reload() hace lo mismo y es interpretado por todos los navegadores, por lo que lo aconsejamos antes que execCommand('Refresh')


En el ejemplo que mostramos a continuación, vemos una buena forma de usar este método en una página html para evitar que salten errores en navegadores que no acepten el método o el comando llamado.
La función recibe los mismos parámetros que "execCommand", pero antes de ejecutar este comprueba que el explorador del usuario puede ejecutar este método, si no lo es le avisa con un alert (esto se podría cambiar o quitar) y así se evita que el navegador del usuario dé problemas imprevistos. Además si da error por los parámetros pasados, también da un alert, que podría ser cambiado por alternativas dependiendo del navegador y el comando a ejecutar.


En el HEAD:
<script type="text/javascript">
    //Su explorador no soporta java o lo tiene deshabilitado; esta pagina necesita javascript para funcionar correctamente<!--
    //Copyright © McAnam.com
    // http://www.mcanam.com/articulos/JavaScript.php?id=18

    function comando_documento(sComando, bInterfaz_de_usuario, Anadido){
        
        if (document.execCommand)
        {
            if (document.execCommand(sComando, bInterfaz_de_usuario, Anadido) === false)
                alert("No se pudo realizar la acción");
        }
        else
        {
            alert('Su navegador no acepta execCommand');
        }
        
    }
    
    //-->
</script>

En el BODY:
<form>
    <a href="javascript:comando_documento('SaveAs',false, document.getElementById('texto').value)">
        Guardar esta ventana con el nombre...
    </a>
    <input type="text" name="texto" id="texto" value="nombre.htm">
    <br><br>
    <input type="button" onclick="comando_documento('ClearAuthenticationCache')" value="Limpiar autenticación de caché">
    <input type="button" onclick="comando_documento('Open')" value="Abrir dirección">
    <input type="button" onclick="comando_documento('Print')" value="Imprimir">
    <input type="button" onclick="comando_documento('Undo')" value="Deshacer">
    <input type="button" onclick="comando_documento('Redo')" value="Rehacer">
    <input type="button" onclick="comando_documento('Refresh')" value="Refrescar">
</form>    

Ejemplo:

Links relacionados:
Crear un editor de páginas HTML
Abrir una ventana nueva
Añadir página a Favoritos
establecer tu página como la página de inicio del usuario
Cookies, crear cookies, ver valores de las cookies


Para cualquier duda, consulta, sugerencia, opinión, colaboración, etc; no dude en ponerse en contacto con nosotros

Copyright © 2002-2017 [McAnam]. Reservados todos los derechos.
www.mcanam.com