プロが教えるわが家の防犯対策術!

accesskeyに使える文字を全部教えてください
私が参照している本によると「HTML4.0で利用可能な文字セット中の1文字」とのことですが、私には、この説明では、どの文字が使えて、どの文字が使えないのか分かりません。
今までの自己調査によると・・・

A~Zのアルファベット26個

0~9の数字10個

単独キーで入力できる記号10個
コンマ(,)
ハイフン(-)
ピリオド(.)
斜線(/)
コロン(:)
セミコロン(;)
アットマーク(@)
大カッコ([と])
キャレット(^)

シフトキーと組み合わせて入力する記号16個
びっくりマーク(!)
シャープ(#)
ドル記号($)
パーセント記号(%)
アンパサンド(&)
アポストロフィー(')
小カッコ((と))
アスタリスク(*)
プラス(+)
等号(=)
はてなマーク(?)
逆クォート(`)
中カッコ({と})
チルダ(~)

以上62個が使用できました。

次の記号3個
ダブルクォート(")
山カッコ(<と>)
はIE6で動きましたが構文チェックサイトで減点を食らってしまいます。
HTMLの特殊文字だからダメなのか?と思いきや、アンパサンド(&)はOKでした^^;

IE6では他にもスペースキー、エンターキー、バックスペースキー、シフトキー、漢字キーが使えましたが、これらも構文チェックサイトでは、はじかれます。

以上より、最初に挙げた62個の文字が正式にaccesskeyに使用して良い文字だと思うのですが、正解でしょうか。

A 回答 (4件)

http://www.w3.org/TR/html4/interact/forms.html#a …
accesskey=「character」をクリック
http://www.w3.org/TR/html4/types.html#type-chara …
「%Character」をクリック
http://www.w3.org/TR/html4/sgml/dtd.html#Character
「CDATA」をクリック
http://www.w3.org/TR/html4/types.html#type-cdata


> <a> の accesskey の属性値 `&quot;` は正しくありません。ASCII1文字でなければなりません。

なるほど、CDATAの定義である数値参照、実体参照はダメって事でしょうか。
だとすると、上記dtd.htmlのページから
> a single character from [ISO10646]
とあるとおり、ISO 10646を確認すると、
http://ja.wikipedia.org/wiki/ISO/IEC_10646
実質、UTF-8やUTF-16の上位互換ですので、少なくともUTF-8で表現できる文字(日本語やアラビア語も含まれます)のうち、”1文字”であればどれでも良い、
と言うことになりそうです。

とはいえ、ダブルクォーテーションはHTMLタグ属性で使用するため、属性の値には使えませんし、
「タブ」「改行」は半角スペースに変換されるため使えないと思います。
また、バックスペースやNULL文字などの表示できない文字も、たしかHTMLのルールでは半角スペースに置き換えられると思います。


<>の記号ですが、これはCDATAとしてHTMLタグ属性に使用できるはずです。

検証コード(JavaScript、CSS)
<style>
/* IE8、Safari4、Firefox3.6、Opear10 */
div[class="aaa<>"]{color:blue;}
</style>

<div class="aaa<>">
あいう
</div>
<script>
/* Safari4、Firefox3.6、Opear10 */
alert(document.getElementsByClassName('aaa<>')[0].innerHTML);
</script>
-------検証コードここまで


「 『「"」 「タブ」「表示できない文字」』以外のISO 10646で定義された文字(全ての文字?)、1文字をURLエンコードや数値参照にせずに記述する」

ということではないでしょうか。

ブラウザや文法チェッカーのサポート状況まではわかりません。
(英数字でさえ使えないブラウザもあります)
個人やどこかの法人(たとえそれがW3Cであっても)が作ったソフトウェア(文法チェッカー含む)にバグがないという保証はありません。
もちろん、私の解釈の仕方が間違っているという可能性もあります。
    • good
    • 0
この回答へのお礼

talooさん、ていねいな解説ありがとうございます。
W3Cのサイトに載っている情報ですので間違いないですね!
(私はまともに読めていませんが・・・)

しかし例のチェックサイトで、
<a href="abc" accesskey="あ">abc</a>
をテストしてみると、
<a> の accesskey の属性値 `あ` は正しくありません。ASCII1文字でなければなりません。
というエラーになります。

ASCIIとは、あの7ビットのアスキー文字セットのことでしょうが、これはW3Cの仕様と相違していますね。
サイト管理者に問い合わせて、真相を解き明かしたいという衝動が出てきましたが・・・
現段階の私の方針としては、このチェックサイトを信用することにします。
なぜなら、このチェックサイトを疑うということは、
私が今まで作成したページを全部見直す必要があるのでは!?という思いがよぎったからです^^;

そして、やはりaccesskeyとして使用する文字は、最初に挙げた62文字に限定したいと思います。
W3Cによると、ほとんど全ての文字が使用可能とのことですが、
日本語を使用するとなると、まず日本語入力機能を起動し、それからたいていは2個のキーをたたいてローマ字を完成させるという、多めの手続きが必要になり、私が思い描いているアクセシビリティーとマッチしなくなるためです。

お礼日時:2010/02/27 11:49

W3Cの仕様をよく読むと


> The invocation of access keys depends on the underlying system.
実装はシステム依存、と書いてますね。
・仕様として、CDATAの「一文字」を指定する。
・その文字をアクセスキーとして入力できるか、はシステム次第。
ということではないでしょうか。

いろんな環境を考えたら、A-Zと0-9くらいにするのが妥当」だと思います。


W3CとAnother HTML-lintの違いは
http://openlab.ring.gr.jp/k16/htmllint/faq.html
の最初のQ&Aに書いてありました。
    • good
    • 0
この回答へのお礼

kmeeさん、ご返信ありがとうございます。
現状では仕様と実装にかなりの相違があることを考慮して、それぞれの文字に優先順位を付けて使用することとします。
最優先で使用するのは何と言ってもA-Zの英字26個。
それでも足りない場合は0-9の数字10個。
それでも足りない場合は、やや危険ではありますが、単独キーで入力できる記号10個。
そして、それでもまだ足りない場合は、禁断の、シフトキーと組み合わせて入力する記号15個。
なぜ15個かというと、アンパサンド(&)を使用することは止めました。

アンパサンド(&)
ダブルクォート(")
開き山カッコ(<)
閉じ山カッコ(>)
この4つの文字はHTMLのメタ文字なので、やはり使わない方が安全と判断しました。
良ければ次スレにも来てください。
http://oshiete1.goo.ne.jp/qa5717743.html
私の心の移り変わりがよく分かります。
えっ、知りたくない!?、さいですか^^;

お礼日時:2010/03/02 20:19

これは私の個人的な考え方ですが。


ユーザビリティーを考慮されるなら、文法以上に制限がかかると思います。

IEではALTキーとaccesskeyを組み合わせて実行しますが、
accesskeyが指定されていないページでは、たとえばALT+Fでブラウザのファイルメニューを表示します。
そこでaccesskey="F"が指定されていると、ファイルメニューが使えなくなります。
古いバージョンではファイルメニューが優先されますから、accesskeyが使えません。

この様に考えれば、ブラウザメニューに使用されている文字は全て使えないと言うことになると思います。


それ以外にも、アルファベットは使えるが記号は使えないと言うような、ブラウザ独自実装をしているブラウザは多いと思いますから、
日本語はもちろん、記号も使わない方が良いと思いますし、
たとえば、フランス語のaとeがくっついた文字などは、日本語OSでは漢字変換を使用して入力しなければならないと思いますが、
キーボードをフランス語配置(つまりフランス語圏の人)にすれば、Ctrl+aで入力できると思います。(Windows OS上にて)

また、どのキーとの組み合わせでaccesskeyを実行するかはブラウザ依存ですから、
そういうのも含めて、モディファイアキー(ShiftとかCtrlとか)+キーで入力できるから大丈夫、というのも、考え物だと思います。


というわけで、私は上記の理由により、アルファベットのごく一部しか使用していません。
これは一般的なユーザビリティー、アクセシビリティーより厳しい制限だと思います。


なお、これも個人的な考えですが、accesskeyの事ではありませんが、
時には文法違反を起こさせた方が利用者にとって使いやすくなることもあると思います。
ご参考まで。


邦訳。
http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401 …
W3Cのは仕様書であって解説書ではありません。
解説は解説サイトを参考にされるのが良いと思います。
    • good
    • 0
この回答へのお礼

talooさん、こんにちは^^
W3Cの仕様書通りに動作しないブラウザーは広義にはバグと言えましょう。
となると各社ブラウザー開発チームは、そのバグを修正するために、日夜努力しているはずです。
よって時代が進むにつれ、よりW3Cの仕様に則したブラウザーが世に出回ることが期待できます。

この私の思いに、talooさんの助言も考慮し、現段階の方針としては、
1.とにかく例の採点サイトで満点を取る
2.ユーザーの気持ちになって、完成したページを利用してみる
以上2本立てのテストをやれば良いかなと。

あと邦訳ページのご紹介ありがとうございました。
お気に入りに登録しました!

お礼日時:2010/03/01 14:49

http://www.w3.org/TR/html4/interact/forms.html#a …

HTML4.01、XHTML1.0/1.1ではCDATAとして定義されていますので、
"は&quot;などにしておけば良いと思います。

タブキーと改行はスペースとして扱いますから、この2つは使用できないと思いますが、
CDATAである以上、日本語やアラビア語などでも可能(必要があればURLエンコードする)なはずです。

あくまで文法上は。
ブラウザがサポートしているかどうかで判断されるなら、accesskeyそのものをサポートしていないブラウザもありますので、私は文法が絶対ではないと思います。ご参考まで。
    • good
    • 0
この回答へのお礼

talooさん、ご返信ありがとうございます。
ご紹介いただいたサイトにはCDATAに関する説明が掲載されているのでしょうか。
CDATAとは何ですか。

http://openlab.ring.gr.jp/k16/htmllint/htmllintl …
私はこのチェックサイトをかなり信頼していて、しょっちゅう利用しています。

ここで、
<a href="abc" accesskey="&quot;">abc</a>
をチェックすると、
<a> の accesskey の属性値 `&quot;` は正しくありません。ASCII1文字でなければなりません。
というエラーになります。
逆に、
<a href="abc" accesskey='"'>abc</a>
とすると、
<a> の accesskey の属性値が '"' と書かれていますが、"&quot;" の方が安全です。
というエラーになり、どっちやねん???って感じです。

<a href="abc" accesskey="&lt;">abc</a>
および
<a href="abc" accesskey="&gt;">abc</a>
も、
<a href="abc" accesskey="&quot;">abc</a>
と同様のエラーになります。

<a href="abc" accesskey="<">abc</a>

<a href="abc" accesskey=">">abc</a>
については
多量のエラーが出るのでおそらくNGですね・・・

またURLエンコードも試してみました。
&、<、>をURLエンコードすると、それぞれ%22、%3C、%3Eとなるので、
<a href="abc" accesskey="%22">abc</a>
<a href="abc" accesskey="%3C">abc</a>
<a href="abc" accesskey="%3E">abc</a>
としました。
しかし、
<a> の accesskey の属性値 `%26` は正しくありません。ASCII1文字でなければなりません。
<a> の accesskey の属性値 `%3C` は正しくありません。ASCII1文字でなければなりません。
<a> の accesskey の属性値 `%3E` は正しくありません。ASCII1文字でなければなりません。
というエラーになってしまいました。

以上の実験から予想するに、次の記号3個
ダブルクォート(")
開き山カッコ(<)
閉じ山カッコ(>)
はaccesskeyに使用できないという結論に行き着きました。

また、日本語やアラビア語に関してもダメなのではと思うのですが、どうでしょうか。
それとも、このチェックサイトがバグってる???

accesskeyで使用可能な文字の一覧表が、どこかのサイトにありそうなものですが、なかなか見つからないものですね・・・

お礼日時:2010/02/27 01:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!