Enhanced Feed Preview 0.2 公開2007年01月18日 21時35分

先日公開した Enhanced Feed Preview を 0.2 に更新しました。相変わらずベータ版です。ついでに専用ページも作りました。

Enhanced Feed Preview 0.2

  • メッセージ、メニュー項目などを一部変更。
  • 拡張のアイコンの追加。
  • 通知バーを表示したまま再読み込みすると動作しなくなる不具合を修正。
  • アプリケーション選択ダイアログのタイトルを修正。
  • trunk に対応。
  • 英語 (en-US) ロケールの追加。

auto-discovery - Mozilla Firefox Thunderbird の拡張あれこれ-MEMO」にて Sage のコンテキストメニューが動作しなくなるという報告がありましたが、こちらでは再現できなかったため、何も対策を講じていません。

なお、通常の Firefox において、種類の異なるフィードがひとつずつあるときに、その中のひとつしかフィードプレビューで表示されないのは仕様です。この場合、各フィードの内容は同じで単にフォーマットが異なるだけと考えられます。内容が同じものをわざわざ選ばせるのは利用者を混乱させるだけなので、Firefox が気を利かせて (?) 自動的にひとつ選んでくれるというわけです。同じ種類のフィードが複数あればそれらは内容が異なるとみなされ、すべてのフィードから選択するためのポップアップメニューが表示されます。Firefox のフィードアイコンのメニュー」にてまとめなおしました。

また、MIME タイプ application/atom+xml は RFC 4287 で定義された正式なものです。Atom フィードの MIME タイプを application/rss+xml としてはいけません。

Enhanced Feed Preview 0.1 公開2007年01月16日 23時14分

Another 朝顔日記 - Enhanced Feed Preview」で提案されていた Firefox の拡張機能、Enhanced Feed Preview を作成、公開しました。Firefox 2 ではフィードを表示する際組み込みのプレビュー画面が用いられますが、この拡張を使うとフィードが製作者スタイルシートを持っていればそれを使って表示するようになります。

[Enhanced Feed Preview のフィードの通知画面] [Enhanced Feed Preview の設定画面]

このバージョン 0.1 はベータ版です。メニュー項目名など改善案があればどんどんお寄せください。ある程度機能、UI が固まったら 1.0 として Firefox Add-ons にも登録するつもりです。なお、現時点では日本語ロケールしか含まれていません。

Enhanced Feed Preview 0.1

通知バーのラベルが「このフィードを購読する」となっていますが、「フィードを表示しています」のほうがいいような気がしてきたので、次バージョンではそうします。

専用ページを作成したので以降のバージョンはそちらでどうぞ。

バックエンドはどうすればいいのかわかっていたのですぐできましたが、UI の作成に手間取りました。しかしリストに登録されているフィードにはメッセージを表示しないって、それはホワイトリストではなくブラックリストではありませんか?

それにしても Firefox 2 にして以来、通知バーの上部が切れて表示されるのが不恰好です。機能上は問題ないので探していませんが、すでにバグは立っているのでしょうか。

userChrome.js 用スクリプト2006年12月31日 14時42分

userChrome.js にずいぶんお世話になっていると書いたので、現時点で私が使っている userChrome.js 用スクリプトを公開。必要最低限の機能に絞り込める、細かいところに手が届くのがいいところ。

ここに掲載されているスクリプトの大部分は UCJS Loader 経由でないとうまく動きません。

UCJS Loader
Sub-Script Loader の改良版。UTF-8 マルチバイト文字、JavaScript 1.7 の機能が使用可能に。Build ID 20070109 以降の Trunk では Bug 364692 修正の影響で (?) 動作しなくなっているようです。Sub-Script Loader なら問題はありませんが、日本語文字をそのまま使いたいといった場合にはバグ対応版をどうぞ。(少々トリッキーな手段でバグを回避しているので、最新の Trunk を使っている人以外は通常版を使ってください。) 原因となっていた (?) バグはすでに修正されており、バグ対応版はその役目を終えています。最新の Trunk でも UCJS Loader が利用可能なはずです。
Add ZoneId
ダウンロードしたファイルに ZoneId を付加する。Zone Identifier Extension の移植。
Context Encoding Menu
コンテキストメニューに「文字エンコーディング」メニューを追加する。フレームページの場合、「表示」メニューの「文字エンコーディング」メニューは最も外側のフレームの文字コードを、コンテキストメニューのものは現在のフレームの文字コードを指すようになる。
Control Tab Open
URL バー、検索バーでの Ctrl キーと Alt キーの機能を入れ替える。Ctrl + Enter で新しいタブが開くように。
Copy URL Lite
コンテキストメニューに「タイトルと URL をコピー」「タイトルと選択した部分と URL をコピー」メニューを追加する。
History Scroller [History Scroller 使用画面]
マウスボタンプレス中にホイールスクロールでタブの履歴をポップアップ。TabScroller から履歴機能を抜き出したもの。
Live HTTP headers Menu Fix
「ツール」メニュー中の「Live HTTP headers」メニューにアクセスキーを追加し、メニューの位置を「エラーコンソール」メニューの上部へ移動。
Middle Click and Go
URL バーを中クリックでクリップボード中の URL へ移動、検索バーを中クリックでクリップボード中の文字列を検索、検索バーのポップアップメニューを中クリックでクリップボード中の文字列を特定の検索エンジンで検索。Ctrl キーを押しながらだと新しいタブで開く。Search Clipboard の改良版。
Open Tabs Next
新しいタブを開く際、一番最後ではなく現在のタブの右に開くようにする。
Open URL with
コンテキストメニューに現在のページを IE 、Opera で開くためのメニューを追加する。
Save Session and Exit
「ファイル」メニューに「セッションを保存して終了」メニューを追加する。
Web Developer Leak Fix
ウィンドウを閉じる際、Web Developer がオブザーバを削除しないことがある問題を修正する。
Web Developer Tool Button [Web Developer Tool Button 使用画面]
Web Developer のメニューにアクセスできるツールボタンをツールバーに追加する。

ちなみに、JavaScript において、break 文は continue 文とは違い指定されるラベル名がループ文のものである必要はない。なので、

(function () {
  ...
  if (shouldExit) return;
  ...
})();

と書く代わりに、

main: {
  ...
  if (shouldExit) break main;
  ...
}

と書くこともできる。

CSS だけで画像を切り抜く2006年12月26日 22時14分

海馬日記 - data: URIでユーザスタイルシートに畫像を埋込む」より。リンクの種類を表すアイコンをつける話について。

まあその方法 (data URI を使う) が一番妥当でしょうね。ちなみにカーソルではなくリンクの前に埋め込むのなら一応 data URI を使わずともできます。

:-moz-any-link[target="_blank"]:before {
  content: "";
  font-size: 0;
  padding-left: 16px;
  padding-top: 14px;
  background: url("chrome://browser/skin/Toolbar-small.png") -160px -16px;
}

ディセンダの高さを 2px に決め打ちしているのがいかにも気持ち悪いですが。padding-top の替わりに font-size: 16px とすればこの気持ち悪さはなくなりますが、今度は拡大縮小に伴って切り抜き部分の高さが変わってしまいます。Gecko が display: inline-block に対応してくれれば解決すると思うんですけどね。

Bug 9458 および Bug 368622 の修正により display: inline-block が無事動作するようになりました。Firefox 3 以降は以下でいけるはずです。

:-moz-any-link[target="_blank"]:before {
  content: "";
  display: inline-block;
  width: 16px;
  height: 16px;
  background: url("chrome://browser/skin/Toolbar-small.png") -160px -16px;
}

余談ですが、data URI のデータ部分は RFC 2397*urlchar と定義されています。で、urlcharRFC 2396 からって書いてあるんですが、RFC 2396 にはどこにも urlchar なんて定義されていないんですよね。一番それっぽいのは uric なんですが、果たしてこれはどこかで訂正されているのでしょうか。……などと思っていたら SuikaWiki に詳しい解説がありました。このこと以外にもいろいろと穴のある仕様なんですね。

Firefox 2 へ移行2006年12月22日 00時51分

Firefox 2.0.0.1 が出たので常用のブラウザを Firefox 1.5 系統から 2 系統へと移しました。それに伴い、ブックマークと拡張機能の整理を決行。userChrome.js のおかげで拡張の数を大幅に減らすことができました。以下移行に伴い削除した拡張の一覧。

Copy URL +
Launchy
Paste and Go 2
Right Encoding
TabScroller
Tabs Open Relative
Zone Identifier Extension
userChrome.js で代替。
Link Alert
userContent.css で代替。
Sage
livedoor Readerはてなアンテナに移行。
undoclosetab
本体にて実装。

Link Alert の代替としたスタイルシート (Windows 用) は以下のとおりです。新しいウィンドウを示す適当なアイコンが見当たらなかったので exe のを流用。ツールバーの項目にある「新しいタブ」のアイコンが使えるといいのですが、大きな画像の一部を使う手立てはあるのでしょうか?

/* 特殊なリンクに対するマウスカーソルを変更する */
:-moz-any-link[target="_blank"] {
  cursor: url("moz-icon://.exe?16"), pointer !important;
}
:-moz-any-link[href$=".pdf"] {
  cursor: url("moz-icon://.pdf?16"), pointer !important;
}
:-moz-any-link[href^="javascript:"], :-moz-any-link[href="#"][onclick] {
  cursor: url("moz-icon://.js?16"), pointer !important;
}
:-moz-any-link[href^="mailto:"] {
  cursor: url("moz-icon://.eml?16"), pointer !important;
}