Quiero mis botones de la barra de herramientas (ExtJS) no para captar el foco en la página web cuando se hace clic en ellos, pero para hacer su "cosa" sin cambiar el foco por el clic. ¿Cómo puedo hacer eso?¿Cómo hacer para que los botones no se concentren?
Respuesta
No creo que haya una manera fácil de hacer lo que quiere hacer porque es el comportamiento predeterminado del navegador.
Por supuesto, puede desenfocar() el botón tan pronto como se presiona, pero eso simplemente lo deselecciona. Para que el objeto previamente activo recupere el foco, tendría que crear una "memoria" de géneros añadiendo un controlador de desenfoque para cada elemento para hacer un seguimiento de qué elemento tenía/perdió el foco al último (almacenar el id del elemento en un y actualizarlo cuando un elemento pierde el foco).
Debido a que los botones de la barra de herramientas son simplemente elementos del botón HTML normales, este es un comportamiento real del navegador, y debe pensar dos veces antes de cambiarlo. Pero sin embargo ...
Debería poder evitar que el botón reciba el foco simplemente devolviendo false
desde su controlador onclick
.
Gracias Rene Pensé que era el enfoque correcto, pero no pareció funcionar cuando lo probé. ATM He implementado una solución desagradable en la que en cada Formulario I establecí valores predeterminados: {onBlur: fieldExit} donde fieldExit coloca el objeto que llama en una variable lastField, luego al final del controlador de botones (todos usan el mismo) Hago lastField.focus(). Esto funciona para campos de texto, pero extrañamente no para casillas de verificación (todavía no he probado otros). –
puede evitar que el botón * mantenga * el foco, pero no puede devolver el enfoque al elemento anterior sin hacer un seguimiento de tal – annakata
Cuando se activa el clic, es demasiado tarde para cancelar el enfoque. Como mencioné anteriormente, la prevención del comportamiento predeterminado debe realizarse en onmousedown. No impedirá "onclick", pero evitará el cambio de foco. Al menos en los navegadores Webkit. – real4x
Quizás debería intentar usar stateful
y cambiar las propiedades de estado para campos de formulario o lo que sea para volver a enfocar?
document.activeElement almacena el elemento actualmente enfocado.
Así que en su barra de herramientas, se puede añadir un "mousedown" manejador a esta función:
function preventFocus() {
var ae = document.activeElement;
setTimeout(function() { ae.focus() }, 1);
}
probar este ejemplo:
<html>
<head>
<script>
function preventFocus() {
var ae = document.activeElement;
setTimeout(function() { ae.focus() }, 1);
}
</script>
</head>
<body>
<input type="text"/>
<input type="button" onmousedown="preventFocus()" onclick="alert('clicked')" value="Toolbar" />
</body>
</html>
me habría conecte un desenfoque de detector de eventos para todos los campos. Este oyente debe guardar el campo, que perdió el foco, en una variable global.
Luego, todos los botones de la barra de herramientas deberían tener un detector de eventos de enfoque. Este oyente debe enfocar el campo, que se guardó como se describió anteriormente.
Este código debería funcionar, aunque no prueba que
cancelación del comportamiento predeterminado de onmousedown
impide que un elemento de conseguir el foco:
// Prevent capturing focus by the button.
$('button').on('mousedown',
/** @param {!jQuery.Event} event */
function(event) {
event.preventDefault();
}
);
<script>
function focusor(){
document.getElementById('focus').focus;
}
document.onkeydown = focusor;
document.onclick = focusor;
</script>
<div style="width: 0px; height: 0px; overflow: hiddden;">
<button id="focus"></button>
</div>
Lo que he encontrado, es Tendrás que hacer un elemento ficticio, encontré botones para que funcionen mejor en esta situación. pon el botón en un div y haz el div 0px.
[no hacen la pantalla div ninguno, algunos navegadores simplemente ignorarlo]
Básicamente cualquier clic o presionar un botón, que se centrará en este botón maniquí. Tenía un proyecto muy similar y cada vez que presionaron la tecla hacia abajo seleccionó el primer botón en la página, esto solo se enfoca en el botón una y otra vez.
tipo de jacked up, pero funciona.
- 1. ¿Cómo puedo hacer que los botones de entrada se vean exactamente iguales en todos los navegadores?
- 2. Cómo hacer botones redondos
- 3. WPF: Cómo hacer que los botones de selección se muestren como una fila horizontal de ToggleButtons
- 4. ¿Cómo puedo hacer que los guiones Lua no se descompilen?
- 5. Android: elementos ListView con múltiples botones en los que se puede hacer clic
- 6. ¿Cómo hacer que el botón no se pueda hacer clic después de hacer clic en él?
- 7. Grupo de botones de radio: los eventos de cambio para los botones se anulan?
- 8. ¿Cómo hacer que el div subyacente no se pueda cliquear?
- 9. ¿Cómo puedo detectar que se haga clic en los botones Atrás/Adelante cuando se usa History.js?
- 10. ¿Cómo hacer botones en python/pygame?
- 11. iconos de archivo no se muestra en los botones
- 12. No se puede hacer que Resque funcione
- 13. Cambiar los botones predeterminados en Java para que se vean "Mejor"
- 14. TVirtualStringTree - ¿Cómo cambiar los botones [-]/[+]?
- 15. ¿Cómo hacer botones personalizados en iOS?
- 16. Android: ListView con botones -> OnItemClick no hacer nada
- 17. ¿Cómo puedo obtener los botones de la barra de tareas para los formularios que no son el formulario principal?
- 18. jQueryUI diálogo - estilo no genera para los botones
- 19. Botones web magníficos con un comportamiento adecuado, ¿se puede hacer?
- 20. ¿Cómo usar setTextColor para los botones de radio de Android?
- 21. clases internas anónimas para los botones
- 22. ¿Cómo puedo hacer que los elementos HTML no sean resaltables?
- 23. Android: cómo hacer que no quede espacio entre 2 botones en una distribución lineal horizontal
- 24. Haga que los botones de radio horizontales se envuelvan si es demasiado largo para la pantalla
- 25. ¿Cómo hacer que los fragmentos se carguen más rápido?
- 26. ¿Cómo hacer que los submódulos de Git sean más fáciles para los no programadores?
- 27. ¿Cómo hacer que Java se parezca a los programas de Windows?
- 28. ¿Cómo puedo hacer para que git rechace presionar el código que no se compilará?
- 29. Al usar .net MVC RadioButtonFor(), ¿cómo se agrupa para que solo se pueda hacer una selección?
- 30. ¿Cómo hacer botones personalizados en wx?
+1 exactamente a la derecha. – annakata
Thabks Alan - eso es más o menos lo que estoy haciendo en este momento ... hortera, pero (sobre todo, necesito hacerlo en las excepciones) funciona. –
Atención, esto ya no es verdad. Vea la respuesta de @real4x a continuación. – eremzeit