私のキーボード電源キー スクリプトでは、up
/down
矢印キーを有効にして、電子メールを表すテーブル (どうやら古い Yahoo Classic Mail のようですが、アクセスが許可されなくなる前はその機能に気づきませんでした)。この機能は、1 つの例外を除いてうまく機能します。上矢印キーを押したままにすると (タップではなく、タップ タップ)、一番上のチェックボックスに到達したときに Firefox がロックされてしまいます。押し続けるほど、ブラウザーが KO される可能性が高くなり、プロセスを手動で終了する必要があります。
グローバル変数を含むものはすべてクラスを利用する必要がありますが、私はさまざまなアプローチを受け入れています。option
フレームワークは明示的に禁止されています。実際のコードとパフォーマンスについて話しているのです。
あなたのアプローチがグローバル変数を必要としない限り、オプションクラスは必要ありません...
var option = new function() {this.name = '';}
これは、さまざまなキー押下イベントを処理する関数です...
function keyPressed(evt)
{
var e = evt || event;
var key = e.which || e.keyCode;
if (powerKeysEnabled)
{
switch (key)
{
case 38://Up Arrow
if (e.target.nodeName.toLowerCase()=='a' && e.target.previousSibling && e.target.previousSibling.nodeName.toLowerCase()=='input' && e.target.previousSibling.type=='checkbox' && e.target.parentNode.parentNode.nodeName.toLowerCase()=='tr')
{
var t;
if (e.target.parentNode.parentNode.parentNode.parentNode.nodeName.toLowerCase()=='table') {t = e.target.parentNode.parentNode.parentNode.parentNode;}
else if (e.target.parentNode.parentNode.parentNode.nodeName.toLowerCase()=='table') {t = e.target.parentNode.parentNode.parentNode;}
var tr = t.getElementsByTagName('tr');
for (var i=0; i<tr.length; i++)
{
if (tr[i]===e.target.parentNode.parentNode)
{
i--;
if (tr[i])
{
var a = tr[i].getElementsByTagName('input');
if (a[0] && a[0].type=='checkbox')
{
a[0].focus();
break;
}
else
{
i--;
if (tr[i])
{
var b = tr[i].getElementsByTagName('input');
if (b[0] && b[0].type=='checkbox')
{
b[0].focus();
break;
}
}
}
}
}
}
}
break;
}
}
}
スクリプトがどのように機能するかに興味がある人は、私が XHTML を使用してapplication/xhtml+xml
おり、適切なコードについて非常に明確に説明していることに気付くはずです。position
また、カスタマイズできない入力チェックボックス要素をアンカーに置き換え、チェックボックスを非表示にし (ではなく display
CSS を使用)、各チェックボックスを視覚的にアンカー要素に置き換えていることにも注意してください。空白は、スクリプトが XHTML を解釈する方法においてある程度重要であることに注意してください。他の目的のために編集しないでください。これが動作する XHTML テーブルのサンプルを次に示します...
<table summary="This table displays emails from the currently choosen folder.">
<colgroup style="width: 5%;"></colgroup>
<colgroup style="width: 20%;"></colgroup>
<colgroup style="width: 50%;"></colgroup>
<colgroup style="width: 25%;"></colgroup>
<colgroup style="width: 5%;"></colgroup>
<thead><tr><td colspan="5"><span>Delete, move, other email features...</span></td></tr><tr><td><input type="checkbox" value="" /></td><td> </td><td> </td><td> </td><td> </td></tr></thead>
<tfoot><tr><td></td><td> </td><td> </td><td> </td><td> /td></tr></tfoot>
<tbody>
<tr id="mail_inbox_208_row"><td><input type="checkbox" value="" /></td><td> </td><td> </td><td> </td><td> </td></tr>
<tr id="mail_inbox_207_row"><td><input type="checkbox" value="" /></td><td> </td><td> </td><td> </td><td> </td></tr>
</tbody>
</table>