Hey,
nach langer Suche wende ich mich nun ans forum.
Ich möchte für eine Tabelle (nur für die Tabelle, nicht für das document) die onkey* event(s) abfangen um die Tabelle zu bedienen.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>test</title>
<script type="text/javascript">
var log = function (what)
{
document.getElementById('log').innerHTML += what;
};
</script>
</head>
<body>
<table id="edit">
<tbody onkeypress="log('onkeypress')" onkeydown="log('onkeydown')" onkeyup="log('onkeyup')">
<tr>
<td onkeypress="log('onkeypress td')" onkeydown="log('onkeydown td')" onkeyup="log('onkeyup td')">
asdf
</td>
</tr>
</tbody>
</table>
<div id="log" style="white-space:pre"></div>
</body>
</html>
funktioniert so wie gewollt im opera. nur nicht im firefox (attachEventListener sowie onkey* = function(){} auch nicht) :(
Ich kann mir schon denken, warum das so ist, weil es ja eigentlich keinen sinn macht.
nach einigem fummeln kam ich dann zu dieser notlösung:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>test</title>
<script type="text/javascript">
var log = function (what)
{
document.getElementById('log').innerHTML += what;
};
</script>
</head>
<body>
<table id="edit" onmouseover="this.getElementsByTagName('a')[0].focus()" onmouseout="this.getElementsByTagName('a')[0].blur()">
<tbody onkeypress="log('onkeypress')" onkeydown="log('onkeydown')" onkeyup="log('onkeyup')">
<tr>
<td onkeypress="log('onkeypress td')" onkeydown="log('onkeydown td')" onkeyup="log('onkeyup td')">
asdfasdf <a href="#" style="position:absolute;left:-999em">bla</a>
</td>
</tr>
</tbody>
</table>
<div id="log" style="white-space:pre"></div>
</body>
</html>
irgendwelche vorschläge? es funktioniert, aber gibt mit selektiertem text (was theoretisch gar nicht nötig ist, aber man weiss ja nicht wie der benutzer das sieht) beim verlassen und wieder eintreten natürlich probleme sowie mit der tabreihenfolge. Danke.
Tschö