asp.net - varias - métodos abreviados de teclado para outlook
Implementando teclas de método abreviado en una página web (7)
Las teclas de acceso son inútiles, pero visite este sitio si insiste en usarlas. Es mucho mejor usar esto que javascript, aunque las formas de acceder a las claves de acceso varían según los navegadores. La ventaja de estas soluciones sobre feas de Javascript es que depende del navegador y de la configuración del navegador del usuario para manejarlas.
Estaba pensando en implementar teclas de acceso directo en una aplicación web para mascotas, que estoy desarrollando para mí. Estoy usando c # y asp.net.
He visto muy pocos sitios web (francamente, recuerdo solo g-mail), que tienen teclas de método abreviado.
¿Alguna vez alguien implementó teclas de método abreviado para una aplicación web? En caso afirmativo, ¿cómo hacerlo?
Gracias.
Para implementar esto, necesita registrar las combinaciones de teclas requeridas con JavaScript. Es como registrar oyentes de acción en C # para ciertos eventos. La primera URL que encontré en Google aquí parecía tener una buena visión general: manejo de atajos de teclado en JavaScript .
Una vez que se registran los eventos del teclado, puede usar JavaScript para invocar las operaciones AJAXy (técnicamente creo que las llamadas JSON) en su back-end ASP.net.
Si habilita esta función, asegúrese de que puede encenderla y apagarla : tenga en cuenta que sus accesos directos pueden interferir o entrar en conflicto con los accesos directos integrados que muchos de los paquetes de software de ayuda (por ejemplo, Jaws) pueden ser contraproducentes en términos de accesibilidad .
Manejo de atajos de teclado en JavaScript
Pero entiendo por qué pocos sitios lo usan, de esta manera tiene muchas dificultades. Y te animo a que no lo uses también. O no para que sea la característica principal.
Mousetrap es una excelente biblioteca de JavaScript para manejar teclas de método abreviado.
En función de cómo he visto que otras aplicaciones (Gmail, JIRA) usan teclas de método abreviado, y de acuerdo con mi propia experiencia, quisiera hacer algunas sugerencias:
- Interferir con las teclas de acceso directo del navegador es una posibilidad real. La forma más confiable de evitar esto es usar letras no modificadas (es decir, A en lugar de Ctrl-A o Alt-A ).
- Los atajos de teclado son relativamente raros para los sitios web, por lo que adolecen de una mala visibilidad. Debido a que no son muy visibles, deberá agregar, por ejemplo, información sobre herramientas o sugerencias discretas para que los usuarios sepan que existen. Los atajos de teclado parecen ser más útiles para las aplicaciones web, como Gmail y JIRA, que se espera que se utilicen en gran medida; de lo contrario, simplemente no hay suficiente oportunidad o beneficio para aprenderlos.
use this javascript on your master page this work using keycode.........
------------------------------------------
var isfocused=false;
document.onkeydown = overrideKeyboardEvent;
document.onkeyup = overrideKeyboardEvent;
var keyIsDown = {};
var get_focused="";
function overrideKeyboardEvent(e){
switch(e.type){
case "keydown":
if(!keyIsDown[e.keyCode]){
keyIsDown[e.keyCode] = true;
// do key down stuff here
if (e.keyCode == 40) {
var t = new Array;
t = document.getElementsByTagName("input");
var n = "1";
for (var r = 0; r < t.length; r++) {
if (t[r].type == "checkbox") {
var i = document.cookie.split(";");
var s = y = i[0].substr(i[0].indexOf("=") + 1);
if (s.toLowerCase().indexOf("active") != -1) {
if (n == "2") {
document.getElementById(t[r].id).focus();
document.cookie = "aa" + "=" + t[r].id;
return false
}
if (t[r].id == s) {
n = "2"
}
} else {
document.getElementById(t[r].id).focus();
document.cookie = "aa" + "=" + t[r].id;
return false
}
}
}
}
if( e.keyCode==115)
{ e.preventDefault();
var c = new Array();
c = document.getElementsByTagName(''input'');
for (var i=0;i<c.length;i++)
{
if(c[i].type==''submit'' && c[i].value==''Submit'' || c[i].type==''submit'' && c[i].value==''Summary Report'' )
{
e.preventDefault();
document.getElementById(''''+c[i].id+'''').click();
}
}
return ;
}
if( e.keyCode==27 )
{
window.location = document.referrer;
}
if( e.keyCode==46 )
{
var c=new Array();
c=document.getElementsByTagName(''tr'');
for(var i=0;i<c.length;i++)
{
if(c[i].onclick!=null)
{
if(c[i].onclick.toString().indexOf(''OnUserSelected'')!=-1 && c[i].onclick.toString().indexOf(''''+get_focused+'''')!=-1)
{
var children =new Array();
if(c[i].innerHTML.indexOf(''remove'')!=-1)
{
children = c[i].innerHTML.split(''remove'');
var gg=children[1];
var get1=new Array();
get1=gg.split(''id="'');
// document.getElementById(''ctl00_ContentPlaceHolder2_hidden111'').value=''1111'';
var a= document.getElementById(''''+get1[1]+''remove'').click();
return false;
//__doPostBack(''''+get1[1]+''remove'','''');
}
else
{
children = c[i].innerHTML.split(''delete'');
var gg=children[1];
var get1=new Array();
get1=gg.split(''id="'');
// document.getElementById(''ctl00_ContentPlaceHolder2_hidden111'').value=''1111'';
var a= document.getElementById(''''+get1[1]+''d`enter code here`elete'').click();
return false;
}
}
}
}
}
if( e.keyCode==112 )
{
e.preventDefault();
var c=new Array();
c=document.getElementsByTagName(''a'');
for(i=0;i<c.length;i++)
{
if(c[i].innerText.indexOf(''Add New'')!=-1 || c[i].innerText.indexOf(''Back to'')!=-1)
{
window.location=''''+c[i].href+'''';
}
}
}
if( e.keyCode==113)
{
if(get_focused!="")
{
var c=new Array();
c=document.getElementsByTagName(''input'');
for(var i=0;i<c.length;i++)
{
if(c[i].type==''hidden'')
{
if(c[i].id.indexOf(''hidden111'')!=-1)
{
document.getElementById(''''+c[i].id+'''').value=''00'';
document.getElementById(''''+c[i].id+'''').value=get_focused;
__doPostBack(c[i].id,"");
}
}
}
}
}
if (e.keyCode == 38) {
var t = new Array;
t = document.getElementsByTagName("input");
var n = "1";
for (var r = 0; r < t.length; r++) {
if (t[r].type == "checkbox") {
var i = document.cookie.split(";");
var s = y = i[0].substr(i[0].indexOf("=") + 1);
if (s.toLowerCase().indexOf("active") != -1) {
if (t[r].id == s) {
n = "2"
}
if (n == "2") {
var f = 0;
while (f == 0) {
if (t[r - 1].type == "checkbox") {
f = 1
} else {
r--
}
}
document.getElementById(t[r - 1].id).focus();
document.cookie = "aa" + "=" + t[r - 1].id;
return false
}
}
}
}
}
}
break;
case "keyup":
delete(keyIsDown[e.keyCode]);
// do key up stuff here
break;
}
//e.preventDefault();
return true;
}
function disabledEventPropagation(e) {
if (e) {
if (e.stopPropagation) {
e.stopPropagation()
} else if (window.event) {
window.event.cancelBubble = true
}
}
}
document.body.setAttribute("onunload","getdeleted()");
function getdeleted()
{
document.cookie="aa" + "=" +"";
}
0
function OnUserSelected(source,eventArgs) {
if(document.getElementById(''ctl00_ContentPlaceHolder2_hidden111'').value!=''1111'')
{
var hdnValueID = ''ctl00_ContentPlaceHolder2_hidden111'';
try
{
document.getElementById(hdnValueID).value =source;
document.getElementById(hdnValueID).value = eventArgs;
__doPostBack(hdnValueID, "");
}
catch(errorr)
{
alert(errorr);
}
}
else
{
get_focused =eventArgs;
document.getElementById(''ctl00_ContentPlaceHolder2_hidden111'').value='''';
}
}
<script type="text/javascript">
if (window.captureEvents) {
window.captureEvents(Event.KeyUp);
window.onkeyup = executeCode;
}
else if (window.attachEvent) {
document.attachEvent(''onkeyup'', executeCode);
}
function executeCode(evt) {
if (evt == null) {
evt = window.event;
}
var theKey = parseInt(evt.keyCode, 10);
switch (theKey) {
case 35: // End
document.getElementById("<%=btnSave.ClientID%>").click();
//document.getElementById(''ctl00_ContentPlaceHolder1_btnHome'').click();
break;
case 36: // F8
document.getElementById(''btnreset'').click();
break;
case 120: // F9
// document.getElementById(''Button1'').click();
break;
case 87: //w
if (window.event.altKey)
document.getElementById(''buttonid'').click();
break;
}
evt.returnValue = false;
return false;
}
</script>
<asp:Button ID="btnSave" runat="server" Text="Button" />
</asp:Content>