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

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

Firefox 3 にしたら、Gmail のフィルタ設定のキーワード欄を複数行にする Stylish のスタイル定義が効かなくなっていた。

このスタイル定義は

-moz-binding: url(http://persistent.info/files/gmail-filter.xml#filter);

のように外部サイトを参照するようになっており、Firefox 3 のセキュリティ強化によりエラーとなってしまう。考えてみれば、外部サイトに置かれたファイルに定義された書き換えルールを使っているっていうのはかなり危険である。ファイルを置き換えられても気付かないだろうし。。。

自分は新バージョンの Gmail に対応するため、XBL ファイルをローカルに置き、

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

としているが、これもエラーとなった。
新バージョンの Gmail でこのフィルタを使うにはこちらを参照。
続・Gmail のフィルタ設定のキーワード欄を複数行にする

解決方法は、XBL ファイルを Stylish のクロムフォルダに置くこと。
パスは <Firefoxプロファイルフォルダ>\extensions\{46551EC9-40F0-4e47-8E18-8E5CF550CFB8}\chrome\content

せっかくなので、手順をまとめておく。目的は Firefox 3 & 新バージョンの Gmail で使えることだけど、たぶん Firefox 2 以前、旧バージョンの Gmail でも動くと思う。

1. XBL ファイルを Stylish のクロムフォルダに置く

<Firefoxプロファイルフォルダ>\extensions\{46551EC9-40F0-4e47-8E18-8E5CF550CFB8}\chrome\content を開き、次の内容を gmail-expand-filter.xml として保存。

<?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>

2. スタイルを定義する

Stylish に新しいスタイルを作成し、次のコードを入力する。

@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document domain("mail.google.com") {
input[name="cf1_has"],
input.MtafId[tabindex="54"],
input.MtafId[tabindex="5"] {
  display: none;
  -moz-binding: url(chrome://stylish/content/gmail-expand-filter.xml#filter);
}
}

0 コメント: