"Thomas Due" <t.due@scanvaegt_REMOVE.dk> writes:
> Jeg sidder og undersøger muligheder i forbindelse med et fremtidigt
> asp.net produkt. I den sammenhæng sidder vi og overvejr hvordan man
> laver access-keys, eller shortcut-keys.
Den almindelige metode er med HTML.
<URL:
http://www.w3.org/TR/html4/interact/forms.html#h-17.11.2>
> Jeg ved det er muligt at tildele en access-key til et element, f.eks.
> 'A', elementet aktiveres så med ALT+A.
Det afhænger så af browseren. Opera aktiverer access-key'en med
Alt-ESC A (for at undgå konflikt med shortcut keys til browseren selv).
> Mit spørgsmål er så om det er muligt at lave en anden form for
> access-key, f.eks. ALT+F1, eller ctrl+shift+Q. I så fald hvordan gør
> man det?
Så skal man selv lave koden til det. Browseren hjælper ikke.
> Jeg har en kraftig mistanke om at hvis det kan gøres, så skal det
> foregå med Javascript.
Det lyder rigtigt. Man kan stadig løbe ind i at browseren selv fanger
trykket.
> Den platform vi sigter imod er IE 5.5/6. Selvfølgelig med javascript
> slået til.
Lav det dog så det virker i flere browsere.
Her er et eksempel:
---
<script type="text/javascript">
function init(){
// element key ctrl alt
var keys = [["input1","Z",true,false],
["input2","X",true,false],
["input3","C",false,true]];
function keyPress(event) {
var keyCode = event.keyCode || event.charCode || event.which;
var key = String.fromCharCode(keyCode).toUpperCase();
for (var i in keys) {
if (keys[i][1]==key &&
keys[i][2]===event.ctrlKey &&
keys[i][3]===event.altKey) {
var elem = document.getElementById(keys[i][0]);
if (!elem) {return;} // Fix your page!
if (elem.focus) {elem.focus();}
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
}
}
}
if (document.addEventListener) {
document.addEventListener("keydown",keyPress,false);
} else if (document.attachEvent) {
document.attachEvent("onkeydown",
function (event) {
return keyPress.call(document,event || window.event);});
} else {
document.onkeypress = keyPress;
}
}
</script>
---
med tilhørende kode
---
<body onload="init()">
<p><input id="input1"><input id="input2"><a href="" id="input3">Reload</a></p>
</body>
---
This works in IE6 and Mozilla (but only because Ctrl-X and Ctrl-Z weren't
used for anything else). It almost works in Opera 7, except that Alt-C is
taken.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
Art D'HTML: <URL:
http://www.infimum.dk/HTML/randomArtSplit.html>
'Faith without judgement merely degrades the spirit divine.'