サイトの更新情報
は分離しました。
視覚障害者がホームページを作ろうとする際:
という場合もあることを知った。
問題はAll About Japanの提示している「視覚障害者向けに素材屋が取れる解決策」。longdesc属性には一切触れず、「JavaScriptを使ったポップアップで画像の説明にリンクする方法」を紹介している。ALTタグ
はご愛嬌。
ツッコミどころのようでツッコミどころでないのは、「alt属性に画像の説明を記述」している点。画像そのものを紹介したい場合、そのimg要素(サムネイル画像)をフルサイズ画像へのアンカーにして、alt属性には画像の説明や特徴を記述できる。
「alt属性=画像の説明」という間違った認識を否定する時、「alt属性は画像の説明ではない」といってしまうと、それはそれで間違いになってしまう。
画像素材屋がサムネイルなどの画像を提供する場合、伝えたいのは「それがどのような画像なのか」つまり画像の性質なので、文字で代替するなら「画像の説明」になる。
これは、同じ終点リソースへのリンクが2つあることになる。src属性による埋め込み型リンクと、href属性による参照型リンクだ。
この冗長性は、主に晴眼者に不利益を生じさせる。
ポインタが手の形になったものだからはりきって(謎)クリックしたところ、同じ画像が表示されてガッカリ、というアレ。
問題は、画像を非表示にした場合、img要素と一緒にリンク(関係性)も除去されてしまうことだ。そのため、この例のような冗長なリンクをしなければならなくなる。
フレーム内のスクリプトにて、親ウィンドウのルート要素下にある要素をコピーし、そのフレーム内のルート要素下に追加しようとするとエラー(もちろんクロスサイトではなく)。
var _parent = window.parent.document;
var oH1 = _parent.getElementsByTagName('H1').item(0);
document.body.appendChild(oH1.cloneNode(true));
IE6/Win では「引数が無効」と言われる。Mozillaは問題なし。
対策は、コピーしたい要素のouterHTMLを読んで、追加先の要素のinnerHTMLに書くとか。この例では最後の行を以下のように:
document.body.innerHTML += oH1.outerHTML;
IEはiframe要素内の文書を別のDOMツリーとして扱い、Mozillaは同じDOMツリーとして扱う、ということだろうか。
以上のような問題を回避しつつ、ページ内ナビゲーションとサイトマップを統合(謎)してみた。文書内容と無関係なサイトマップがくっついてくる(謎)のは無意味なので、ページ内目次もマップに含めてしまおう、と。
サイトマップ最後の課題は、現在地と同時に「どこからやってきたか」に関する情報を取得するにはどうすれば良いかということだけれども、リファラというのはイマイチ信用できない。それなら、サイト内のリソースを参照するアンカーのhref属性にはQueryをつけることにしたらどうだろう。
例えばこのページから、7月後半分にリンクするという場合:
<a href="d20027l.html?agenda.html">agenda(7月後半)</a>
こういう風にすれば、リンク先に渡す情報としてはそこそこ信用できるのではないかな。
やってみるとして実体を変更するのはちょっと不安だから、JavaScriptを使って、document.links[index].hrefそれぞれに書き加えることになるのか。正規表現でサイト内の別文書を示すURIを判別して? リンクは山ほどあるのに? サイトマップを使わないユーザさんには無関係なのに?
駄目かも。
window.onunload()時にクッキーにファイル名を書くとか。クッキー依存?
まあ無くても構わないものだし、ちょっとやってみてもいいかな(どうかな)。
- XHTML Scripting Module (英語)を読んでいて、script要素にdefer属性があることに気づいた。てっきりMSの独自拡張かと思って今までずっと使用を敬遠していたのだけど、HTML4.01とかでもvalidじゃあないか。損した。window.onloadよりパフォーマンスが良い方法だから。
nl要素は、何だかなー。この手の本文とは關係の無い記述は、headに「追出す」べきだと思ふけど。視覺系のユーザエージェントでは「ドロップダウン式」のプレゼンテーションスタイルを採用する形になるやうです。
闇黒日記 より
私も最初そうなのかと思って萎えましたが、例示を見る限り、どうやらこのnl要素 (英語)は、例えばこのページにもある「ページ内目次」のようなものを明示するのに使っているようなので、少なくとも本文と関係の無いアレ(一部のグローバルナビゲーション)専用というわけではなさそうです。
XHTML 1.0 (Strict) では、FORM 要素から name 属性が排除されていますが、input 要素には name 属性が温存されています。なんだか不思議な差別ですが、なにか合理的な理由があるものなのでしょうか。
Wind Report - 2002年8月上旬 [QUIA] より
type="radio"なinput要素は、name属性が同じものをグループ化して、排他的な選択ができるようになっています。
同じことをid属性でやろうとするとinvalidになりますので、合理的のような気がします。他のtypeのinput要素については、name属性を残してある合理的な理由
がイマイチ分かりませんが、何となくDTDの限界のような気がしたりしなかったり。少なくとも私はDTDでどうやって他のtypeのinput要素のname属性を排除すればいいのか分かりません。
現行のDOMユーザとしてはgetElementsByName()で任意のノードリストを取得したい時があるのでname属性の復活を希望……というかclassNameで取得したい(無関係)。
何かを検索していて見つけた文章。
というわけで昨日「カンマとピリオドはとみづらい」という旨のメールを1通いただきましたので、「、」と「。」に戻すことにしました。
●1匹見たら100匹いる 2002.5.2(http://www.swany.ne.jp/minba/h/0205.html)より
というわけで
、メールした方を虫に喩えてしまっているわけだ。無意識は恐ろしい。何か作る人間の態度としては、まあ忌避すべきものの一つだとは思う。「ディレクトリを掘って」みると、次のサイトが出てきた。
随分色々と「ホームページ」が作られているようだが、ほとんどのホームページは一面真っ白で何も読めなかった。画像を非表示にしていた為らしい。img要素にalt属性をつけるのは、そんなに面倒なものか。
しかし、alt属性を付けてもらいたいとか思っているわけではない。個人的には、いつまでも間違ったHTML文書を作り続ければいいと思っている。何故ならそれはHTMLではないのだし、HTMLである必要もないからだ。「画像が表示でき、解像度の高いディスプレイで、JavaScriptが機能する」そういった限られた特定の環境に特化したホームページを公開できれば良いのなら、何もHTMLを使う必要はない。間違ったHTML(何と呼ぶかはわからないがHTMLではない何か)でも構わない。ただ、まともなHTMLを使って意識的にデザインすれば、より多くの人に伝えられる、つまりベターな方法があるというだけだ。
問題は、無意識であるということ(プロなら尚更)。
間違っていることを意識しないのが問題だ。意識しないとどうなるか。こういうコンテンツを作ってしまう。
環境に依存せず、文書内各要素の構造上の意味を伝えるはずのHTMLが、無残に捩じ曲げられて伝えられてゆく。
「HTMLの小わざ集」も酷い。
JCOM@Nethomeに依頼して、XSL文書のMIME typeをtext/xmlにしてもらった。「してもらった」つもりなのだけど、元々XSLに対応していたかのように言われた。なんか癪だ。
「最終更新日:2002年6月11日」となっている。でもtext/xmlの欄に、xslは載っていなかったと思った。思ったというか、無いことを確認したからこそメールを書いたのだけど。
尚、某プロバイダ経由のアクセスがおかしくなるという件ですが、JCOM側が何か制限をかけているとか、そういったことはないそうな。
Lars Kasper (独語)氏によると、invalidなHTML文書はtag soupと表現するのだそうな。ぬるい。不思議マークアップ(wonder markup?)の方が的を射た表現だ。
向こうでは見出しレベルはちっとも重要視されていないようで、Kasper氏も「見出しレベルを守っているのなんてオマケだよ、オマケ(意訳)」などと仰る。invalid系文書をtag soupとか呼んでいるから駄目なんだと思った。こちら(どちら)では、最上位見出しをh2タグでマークアップした時点で「不思議マークアップ」だ。
xsl:outputでencoding="Shift_JIS"を指定しているのに、結果ツリーのXML宣言に反映されない。ならDOM操作で直接生成してみようと思って、このようなスクリプトを実行してみた。
var _doc=new ActiveXObject("Msxml2.DOMDocument.4.0");
var pi=_doc.createProcessingInstruction('xml',
'version="1.0" encoding="Shift_JIS"');
alert(pi.xml);
ともかくxmlプロパティ(MS独自拡張プロパティ)を見てみると、version属性以外の全てが消えている。というかそもそもXML宣言ってProcessing Instruction(処理命令)だったっけ? 少なくともXPathでは答えは「No」だけど。
それはともかくとして、XML宣言を削除し、文字列として先頭に挿入する形で回避。ベタベタ。
普通にsaveメソッドで保存すればこの問題は起らなかった。
xmlプロパティはUnicodeなので、文字コード宣言が取り払われるらしい。
HTMLヘルプ内のFAQにこんなのがあった。
これを信じて(うそ)プロセッサ完全乗り換え。何故ってHTML + CSSで簡単にUIを設計できて、変換後のXMLのDOMツリーをメモリに置くことができて(
DOMDocument.transformNodeToObjectメソッド)、しかもJScriptでイケるんだもの。でも、決め手はコレ。
selectNodes(expression)というMS独自拡張メソッドでXPath式が使える。らしい。なんかワクワクする。ワクワクするといえば次世代fub(謎)はXMLでUI(?)を定義するそうで。