Firefox 3 の Accept ヘッダ ― 2007年02月26日 00時28分
Accept ヘッダで CSS の準拠度を振り分ける際の参考に。Minefield では Bug 309438 で HTTP Accept 要求ヘッダ中の application/xhtml+xml の品質係数が一時的に 0.9 にされていますが、Bug 18333 で XML の逐次処理が実装されたことにより元に戻される予定です (Bug 361892)。つまり、Firefox 3 では Accept ヘッダ中の application/xhtml+xml の品質係数はデフォルトの 1 になります。
getElementsByClassName on Gecko ― 2007年02月04日 14時29分
Gecko に Web Applications 1.0 の getElementsByClassName
メソッドが実装されました (Bug 357450)。Firefox 3 から使用可能になります。document.getElementsByClassName
で文書全体から、または element.getElementsByClassName
である要素の子孫要素から、特定のクラス名を含む要素を探し出すことができます。
引数は空白文字区切りでクラス名のリストを表す文字列。複数のクラス名が指定された場合はそれらすべてを持つ要素のリストが返ります。現時点の Web Applications 1.0 仕様では、複数のクラス名を収めた配列も引数として使えることになっていますが、それは実装されていません (一口に「配列」といってもプログラミング言語ごとに実際のデータ構造が異なるから?)。
なお、返されるリストは「生きて」いる、すなわち、文書の変更に伴ってリストの内容も変化します。ですから、以下のコードは期待通り動きません。
var elements = document.getElementsByClassName("foo");
for (var i = 0; i < elements.length; i++)
elements[i].className = "bar";
この場合、たとえば以下のようにする必要があります (またはリストの末尾からなめる、elements = Array.slice(elements, 0)
として静的な配列にするなど)。
var elements = document.getElementsByClassName("foo");
while (elements.length)
elements[0].className = "bar";
同様のことが XUL 文書、XUL 要素に対して使用可能な getElementsByAttribute
メソッドにもいえます。(userChrome.js 用スクリプトを書いているときこれにはまりました。)
ところでこの記事のタイトルは「getElementsByClassName in Gecko」のほうが正しいのでしょうか? どうもそこら辺よくわかりません。
戸惑いの BabelZilla ― 2007年01月31日 23時54分
Enhanced Feed Preview が Firefox Add-ons で承認されたのをいいことに、BabelZilla にも登録しようとしたら盛大に迷いました。「deq blog - BabelZillaの紹介文」を読んで臨んだのですが、見当違いのフォーラムに入ってしまったり、チュートリアルを読もうとしたら翻訳者に対する情報しか載っていなかったり。ようやく Web Translation System というのがそれだと気づくも、WTS Menu の Submit new extension を選んでみればページが存在しませんといわれる始末。結局その下の Main Menu から Submit/update extension を選ぶのが正解という落ちでした。
そんなこんなで何とか登録してみたら、早速ブラジル系ポルトガル語 (pt-BR) とオランダ語 (nl-NL) のロケールが送られてきて、翻訳者さんたちの対応の早さに感謝するとともに驚きです。
ちなみに Firefox Add-ons のほうでは、スタイルシートを使わない (組み込みの Feed View で表示する) フィードを指定できるようにしてほしいという要望が出ています。そうすると設定保存時のデータ構造を変更しなくてはいけないので面倒くさいのですが……。(何も考えずに作ったツケとも言うか。)
Enhanced Feed Preview 1.0 公開 ― 2007年01月28日 21時55分
タイトルのままです。Enhanced Feed Preview の正式版を公開しました。
Firefox Add-ons にも登録を申請しておきました。承認待ちが 200 個近くあるそうなのでいつ承認されるかはわかりませんが。カテゴリをどうすればいいのかわからなかったので、とりあえず Navigation と News Reading にしておきました。承認されました。
Firefox のフィードアイコンのメニュー ― 2007年01月19日 18時46分
気づいたら「Another 朝顔日記 - Re:複数のフィードと Mime タイプ」で補足してくださっているのですが、せっかくいろいろと調べて長々と書いたものをこのままハードディスクの肥やしにするのも惜しいので、蛇足ながら以下書き上げたまま掲載します。
「複数のフィードと Mime タイプ - Mozilla Firefox Thunderbird の拡張あれこれ-MEMO」に関して。前回はひとつの記事内で書いたので混乱を招いてしまったようですが、「なお、通常の Firefox において」以下は Enhanced Feed Preview とは関係ない、素の Firefox のロケーションバーのフィードアイコンの動作について述べたつもりでした。ですが私自身調査が及ばず誤ったことを書いていたので、ここにまとめなおしたいと思います。
ある Web ページ中にフィードを参照する link 要素が含まれる (以下「ページがフィードを持つ」と表現します) 場合、ロケーションバーにフィードアイコンが現れます。ページがフィードをひとつだけ持つときは、フィードアイコンをクリックするとそのフィードがプレビュー表示されます。
さて、問題となるのはページが複数のフィードを持つ場合ですが、ここでフィードアイコンをクリックしたときの動作は Firefox 2 と trunk (Minefield) で異なります。trunk の場合は単純にすべてのフィードがポップアップメニューに表示され、その中からひとつ選択するとそのフィードがプレビュー表示されます。
そして Firefox 2 の場合ですが、これは種類ごとのフィードの数によって異なってきます。各種類のフィードの数がすべて同じならば、自動的に一種類が選ばれその種類のフィードがポップアップメニューに表示されます (各種類のフィードの数がすべてひとつならば、選ばれたひとつのフィードがプレビュー表示されます)。そうでなければすべてのフィードがポップアップメニューに表示されます。ここで種類というのは link 要素の type 属性により決定されます。同じ RSS であっても type 属性に application/rss+xml と指定されたものと application/xml と指定されたものでは違う種類とみなされます。
たとえば、あるページが Atom フィードを m 個、RSS フィードを n 個持っていたとしましょう。m = n ならば自動的に Atom が選ばれ (種類の選び方についてはここでは触れません)、m 個の Atom フィードがポップアップメニューに表示されます。m ≠ n ならば Atom フィード m 個と RSS フィード n 個がすべてポップアップメニューに表示されます。m = n = 1 ならばフィードアイコンをクリックすると Atom フィードがプレビュー表示されます。
どうして複数の中から一種類だけ選ぶのかといえば、利用者を混乱させないためです。複数種類のフィードが同じ数ずつある場合、それらは同じ内容のものが異なるフォーマットで提供されていると考えられます。同じ内容のものを選ばせるのは利用者の手間を増やすばかりなので、Firefox が代わりに重複を取り除いてくれるというわけです。
これが効果的に働いているのが元記事で触れられていた「Carnet Web de Pascal」の場合です。このページは「RSS」「Atom」「RSS-English Only」「Atom-English Only」と四つのフィードを持っていますが、このうち「RSS」と「Atom」、「RSS-English Only」と「Atom-English Only」はそれぞれフォーマットが違うだけで内容は基本的に同じものです。フィードのことをよく知らない人にとって、RSS か Atom かを選べといわれても困惑するばかりでしょうが (ましてやどちらを選んでも同じ内容ならばなおさら)、英語のみかそうでないかを選べというのなら自分の目的にかなったものを選択できるでしょう。
しかし、この方法では Atom で全文提供、RSS でタイトルのみ提供している場合などに、誤って内容の重複と判断されてしまいます。そこで、trunk では Bug 309085 によりこの機能を外し、すべてのフィードがポップアップメニューに表示されるようになっているのです。
最近のコメント