2012-06-12 16 views
25

que se desea capturar Ctrl +S en Chrome, y evitar que el comportamiento del navegador por defecto para guardar la página. ¿Cómo?Ctrl + S preventDefault en Chrome

(sólo publicar la respuesta pregunta & como estaba después de esto por un tiempo bastante largo y no encontrar una solución)

+0

posible duplicado de [contro Overriding l + s (guardar la funcionalidad) en el navegador] (http://stackoverflow.com/questions/4446987/overriding-controls-save-functionality-in-browser) – epascarello

Respuesta

34

Por lo que yo puedo ver, el ingrediente secreto es, que Ctrl +S NO desencadena el evento de pulsación de tecla, solo el evento de selección de tecla.

Usando jQuery.hotkeys: Sólo

$(document).bind('keydown', 'ctrl+s', function(e) { 
    e.preventDefault(); 
    alert('Ctrl+S'); 
    return false; 
}); 

con jQuery:

$(document).bind('keydown', function(e) { 
    if(e.ctrlKey && (e.which == 83)) { 
    e.preventDefault(); 
    alert('Ctrl+S'); 
    return false; 
    } 
}); 

Edición 12/17/2012 - jQuery.hotkeys dice

teclas de atajo no se realiza un seguimiento si' re dentro de un elemento de entrada (a menos que explici Conecte la tecla directa directamente a la entrada). Esto ayuda a evitar el conflicto con el usuario normal.

+2

jQuery.hotkeys no parece capturar el evento cuando un área de texto o el campo de entrada está enfocado. –

+0

@ BrianM.Hunt muy cierto gracias. Documentos cotizados, ya que esta es una "característica" documentada – zupa

+1

Consejo: No use 'keyup', esto siempre activará primero el diálogo guardar. Siempre ve por 'keydown'. –

1

document.onkeydown = function (e) { 
 
    e = e || window.event;//Get event 
 
    if (e.ctrlKey) { 
 
     var c = e.which || e.keyCode;//Get key code 
 
     switch (c) { 
 
      case 83://Block Ctrl+S 
 
       e.preventDefault();  
 
       e.stopPropagation(); 
 
      break; 
 
     } 
 
    } 
 
}; 
 

0

document.onkeydown = function (e) { 
 
    e = e || window.event;//Get event 
 
    if (e.ctrlKey) { 
 
     var c = e.which || e.keyCode;//Get key code 
 
     switch (c) { 
 
      case 83://Block Ctrl+S 
 
      case 87://Block Ctrl+W --Not work in Chrome 
 
       e.preventDefault();  
 
       e.stopPropagation(); 
 
      break; 
 
     } 
 
    } 
 
};

+3

¿por qué 2 respuestas casi idénticas? – zupa

Cuestiones relacionadas