続・Gmail のフィルタ設定のキーワード欄を複数行にする

2008/01/29 | ラベル: , , | このエントリーを含むはてなブックマークを表示

Gmail のフィルタ設定のキーワード欄を複数行にする では、新しいバージョンの Gmail で動かない。新しいバージョンでも動くようにしたときのメモ。

Firebug で見てみると、新しいバージョンの Gmail では、キーワードの入力欄の name 属性値が設定されていないことがわかる。
id は設定されているのだが、これが可変のようでうまくいかない。
かわりに tabindex 属性が使えそうだなと思ったら、既に投稿されていた。

新バージョンになっていない日本語表示でも使う場面がまだあるので、上記サイトの情報と以前の input[name="cf1_has"] を組み合わせて以下のようにしてみた。

@-moz-document domain(mail.google.com) {
input[name="cf1_has"],
input.MtafId[tabindex="54"],
input.MtafId[tabindex="5"] {
display: none;
-moz-binding: url(http://persistent.info/files/gmail-filter.xml#filter);
}
}

これで OK、と思ったら、表示は拡張されてもボタンが効かなくなった。。。
入力欄の id が書き換えによってなくなってしまうからだ。

-moz-binding のところで指定されているファイル(XBL ファイルというものらしい)を修正する必要がある。XBL ファイルに以下のように赤字部分を追加。

<?xml version="1.0"?>  
<bindings xmlns="http://www.mozilla.org/xbl">  
  <binding id="filter" styleexplicitcontent="true">
    <implementation>
      <constructor>
        var textarea = document.createElement("textarea");
        
        textarea.name = this.name;
        textarea.id = this.id;
        textarea.value = this.value;
        textarea.style.width = "100%";
        textarea.style.fontFamily = "monospace";
        textarea.style.fontSize = "14px";
        textarea.rows = 15;
        this.parentNode.replaceChild(textarea, this);
      </constructor>
    </implementation>
  </binding> 
</bindings>

XBLファイルをローカルで動かしている Apache から参照できるように配置、-moz-binding の URL を変更。新旧両方のバージョンで動くことを確認した。

XBLファイルの置き場所はローカルでもWebサーバ上でも良いみたいだが、ローカルに置いてみたところ、セキュリティエラーが発生して動作しなかった。プロファイルフォルダとかクロムフォルダの下に突っ込めばいいのかな。誰か教えてください。

本家が XBLファイルを更新してくれれば一番なんだけど。

(2008年2月3日追記)

C:\Program Files\Mozilla Firefox\chrome に XBL ファイルを置いて

-moz-binding: url(resource:///chrome/gmail-expand-filter.xml#filter);

とすると Webサーバも不要でいい感じ。

0 コメント: