Tags : microformats

このTagsの登録数:1件 表示 : 1 - 1 / 1

2007-09-02

Operator 0.8 に span@title のサポートを追加する

ポスト @ 17:48:10 , 修正 @ 2007-09-02 23:01:09 | firefox, microformats, mozilla, web

木達さんのブラウザだらけの討論大会の告知を読んでいたところ以下の文が目にとまりました。

以下、開催概要です(microformatshCalendarを使って記述しているので、Operatorのような処理系を利用している方には情報を取り出すのに便利かもしれません)。

そこで早速 Firefox 2 に Operator 0.8 をインストールして試してみました。が、残念ながら Operator は hCalendar を見つけてくれませんでした (Frown)

そこで、Operator のソース (Microformats.js)を見たところ、title 属性を拾っているのは abbr 要素だけという悲しい事実がわかりました。木達さんの記事では abbr 要素ではなく sapn 要素を使っているので hCalendar を検出できていませんでした。

ということで、プロファイルディレクトリの /extensions/{95C9A302-8557-4052-91B7-2BB6BA33C885}/chrome/operator.jar の中の content/Microformats/Microformats.js の該当部分を書き換えます。書き換え前のコードは以下の通り

    defaultGetter: function(propnode, parentnode, datatype) {
      if (((((propnode.localName.toLowerCase() == "abbr") || (propnode.localName.toLowerCase() == "html:abbr")) && !propnode.namespaceURI) || 
         ((propnode.localName.toLowerCase() == "abbr") && (propnode.namespaceURI == "http://www.w3.org/1999/xhtml"))) && (propnode.getAttribute("title"))) {
        return propnode.getAttribute("title");
      } else if ...

書き換え後のコードは以下のとおり。

    defaultGetter: function(propnode, parentnode, datatype) {
      if (((((propnode.localName.toLowerCase() == "abbr" ||
              propnode.localName.toLowerCase() == "span") ||
             (propnode.localName.toLowerCase() == "html:abbr" ||
              propnode.localName.toLowerCase() == "html:span")) &&
            !propnode.namespaceURI) || 
           ((propnode.localName.toLowerCase() == "abbr" ||
             propnode.localName.toLowerCase() == "span") &&
            (propnode.namespaceURI == "http://www.w3.org/1999/xhtml"))) &&
          (propnode.getAttribute("title"))) {
        return propnode.getAttribute("title");
      } else if ...

これで木達さんの記事でも hCalendar を検出できるようになりました (Smile)

Operator08SpanElementSupport.thumbnail.png

とはいえ、弊害もあるかもしれませんのでご注意ください。

あるいは、処理する要素の要素型名に関係なく title 属性を持っていたら title 属性の内容を優先する方がより良いのかもしれません。

追記: Bugzilla@MozillaBug 394626 として報告したところ、Operator 開発者の Michael Kaply さんのコメントがつきました。内容は以下の通りです。

あなたのパッチに感謝します。

人々がこの変更を提案してきましたが、microformats コミュニティは、これが dtstart/dtend のアクセシビリティへの正しい解決策であるとは同意していません。

現在のところ、まだ abbr は title (属性) を読むべき唯一のタグです。

さらなる議論に関しては、microformats メーリングリストを参照してください。

ということで、今すぐ Operator が対応するということはなさそうです (Frown)

microformats のメーリングリストでは 8 月に [uf-discuss] Simple solution to abbr-D-P accessibility concerns: 'Title Trigger' から始まる熱い議論があったみたいですね。

あるいは HTML 5 の time 要素に期待?