記事本文
windowsではIEとFirefox、Netscape、MozillaなどのGecko系で対応しているようです。
WindowsならAlt+E、Mac系だとCtrl Key+Eというように押せばいいようです。
IEだと該当のリンクのところに飛ぶだけなのでそこからさらにエンターを押さないといけないようです。
FirefoxだとそのままAlt+Eでいけます。
素晴らしい。
Opera 7.x も対応しています。
キーバインドが Alt + Accesskey ではなく、 Shift + Esc + Accesskey という違いはありますが。
また、 Gecko 系 UA のように accesskey 操作を行っただけでリンク先へ移動するのが良いのか、 IE のようにフォーカスのみに留めるのが良いのかの捉え方は人それぞれですので、一概に Gecko 系 UA の実装の方が素晴らしいとは断定できません。
( 前者の場合、例えば「そのアンカーを単にフォーカスしたいだけ」というニーズには応えられません。 )
私個人としては Gecko 系 UA の挙動の方が好きですが。
accesskeyに対応するキーを押したときに、その要素が選択(focus)されるのか実行(activate)されるのかは、解釈が曖昧で、ブラウザによって実装が異なります。
特に、リンク(a要素)にaccesskey属性を割り当てたときに、アンカーを選択するだけなのか直接リンク先のページに移動するべきなのかは、WAIのメーリングリストでも意見が分かれているという状況です。
HTML4の仕様書は
Pressing an access key assigned to an element gives focus to the element.
The action that occurs when an element receives focus depends on the element.
For example, when a user activates a link defined by the A element, the user agent generally follows the link.
(17.11.2)
としているのですが、これは「a要素がフォーカスを受けた場合、(=利用者によるアクティベートであるという飛躍があって)UAは一般的にリンクをたどる」と読めてしまいます。
a要素のaccesskeyをリンクをたどるとしているブラウザ(iCab, Mozilla, MacIE, Amayaなど)は、たぶんこれをストレートに解釈しているのでしょう。
しかしフォーカスとは、例えばUAAGが
The user may "set" content focus (programmatically or through the user interface) on an enabled element without triggering the associated behaviors.
と定義するように、基本的には機能を働かせることとは別のものです。
こうした考えに従い、accesskeyを押すとアンカーを選択するだけのブラウザ(Win IEなど)もあり、混乱します。
UAAGのチェックポイントが
Allow configuration so that moving the content focus to or from an enabled element does not automatically activate any explicitly associated event handlers.
(9.5 No events on focus change)
と示すように、accesskeyについても、どんな動作をするのかユーザーが設定できるようになるのが一番望ましいのだと思いますが、なかなかそんな環境は実現しそうにありません。
MTの場合は実はaccesskeyというのはソースを見ると設定されているようでaccesskey="1"でタイトルへのリンク、つまり個別ページにいる場合にAlt+1を押すとトップページに行くことができます。
隠し技みたいですね。
前項の通り、 UA によってキーバインドが違うので、 Alt + 1 とは限りません。
また、 Movable Type のデフォルトテンプレートの場合は、トップページへのアンカーに accesskey="1" が設定されていますが、私のようにテンプレートからその記述を除外している場合もあります。
( その理由に関しては別記事に後日まとめます。 )
そして、 accesskey 属性というものは単に設定すれば良いというものではなく、
The rendering of access keys depends on the user agent.
We recommend that authors include the access key in label text or wherever the access key is to apply.
User agents should render the value of an access key in such a way as to emphasize its role and to distinguish it from other characters (e.g., by underlining it).
アクセスキーのレンダリング方法はユーザエージェントに依存する。
著者は、ラベル文や他のあらゆるアクセスキー適用先に、当該アクセスキーの文字を含めるよう勧められる。
ユーザエージェントはアクセスキーの値を、それがアクセスキーであると判るよう他の文字と区別して(下線をつけるなど)レンダリングする必要がある。
とされているため、
隠し技みたい
な状態になっていてはいけないのです。
もっとも、 Movable Type のデフォルトテンプレートでは単に accesskey 属性を指定しただけで、その文字を適用先に含めておらず、またマニュアルをざっと眺めてもそれに関する記述がされていなかったので、 kengo さん ( Going My Way ) がそう思われてしまうのも仕方が無いのかもしれません。
こういった一般的な解をベースに、ブログ用アクセスキーとか制定したら流行るかも(なんでもブログ用とか付ければ良いと思ってる)。
クッキー使ってユーザーごとにカスタマイズできたりしたら楽しそう。
動的にページを作成するようになっているのなら簡単ぽいし。
JavaScriptだけでもできる気がするけど。
こちらは Going My Way: accesskeyをいれてwikiを使いやすくしてみる から辿った weblog の記事から。
Kyo さん ( hail2u.net ) が制定するのかどうかはさておき、制定しようとする人がどれくらい accesskey に関する理解度があるかによって、
流行るかも
という想像が、良い兆候になるか悪しき風習になるか二分されます。
これはまた別記事に書きますが、現状では一般的な解を得られるのはまず無理だと私は思っています。
一部の理論で発せられる流行というのは、昨今の weblog ブームで悪い意味で加速していると思うので、例え最大公約数を得ても一般的な解とすることができるか、それを後日考察してみたいと思います。
さっそく自分のBlogで試したら、「ポン」という音が鳴るだけ×××
何度試しても「ポン、ポン、ポン」
「ポン、ポン、ポン、ポン、ポン、ポン、ポン、ポン」
……やはりMT系だけなのか。
それともおいらがHTMLテンプレートをいじる時にしくじったか。
悲しみをこらえながら、Going My WayさんのページでAlt+1を押してみたら、「ポン」と同じ音がっ!
とうとうおいらのPCがぶっ壊れたか?
さっき、ちょっとしたメールで爆笑して、つばをぶっかけたからか?
熱もあるし、仕事も進んでないのに、遊んでいるバチが当たったのか?
とぐるぐる思い当たることを考えたら、ハッ!!!と気付いたよ。
ブラウザがOperaだからだ。(TeT)
さっそくIEを立ち上げて自分のサイトを確認。
おぉぉぉぉ!
Alt+1でパージトップのタイトルの所に飛びましたわ!!!
これも前項と同様です。
Opera をお使いであれば、 Alt + Accesskey を Shift + Esc + Accesskey と読みかえれば良いです。
Implement of accesskey in Opera 7 beta - その他気がついた点によると、
Shift + Esc + [accesskey]と云うキーバインドを実行する際には、Shift + Escと[accesskey]を同時押しする必要は無く、Shift + Escを一旦押してから、[accesskey]を押す、と云うキーバインドで動作してくれます。
とのことです。
3 つのキーを同時押しでも構いませんし、 Shift + Esc を同時押しした後に Accesskey を一つだけ押しても構いません。
どちらの方法でも accesskey を操作することが出来ます。
リプライ
1 件のリプライが送られています。
この記事に対するご意見やご質問、ご感想などありましたら個別記事ページの送信フォームからお送り下さい。
- 2005-01-11T14:35+09:00 - RUMI
-
ご指摘ありがとうございました。
非常に勉強になりました。
accesskeyの意味がわかったので感激です。
無知ですいません……