宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
trunk gBrowserのloadOneTabとaddTabの引数が変わった - alice0775のファイル置き場 - Yahoo!ジオシティーズを見て初めて知ったけど、TrunkでgBrowser.addTab()
とgBrowser.loadOneTab()
の仕様が変わったようだ。
すでに追加されている「現在のタブの隣に新しいタブを開く」機能は、リファラが渡されていれば現在のタブの隣に、そうでなければタブバーの右端にタブを開くという挙動になっている。これに対し、リファラを渡さなくても現在のタブの隣に新しいタブを開けるようにしたい、という要望が出た(当然と言えば当然だ)。
それを実現するには、普通に考えると、gBrowser.addTab()
とgBrowser.loadOneTab()
の引数でそういう挙動を指定できるようにしてやらないといけない。しかしどっちのメソッドもすでに多数の引数を受け付けるようになってて(現状でもすでに6個ある!)、これ以上引数を増やすのってどうなん? と。関数の引数が多いのは悪い設計の典型例だ。こういう場面ではハッシュなりなんなりを使うのが定石ですわな。そこで件のバグが立ったと。
最初に提出されたパッチは、引数リストにさらにaRelatedToCurrent
を加えつつ、各引数に対応する値をプロパティに持つオブジェクトを2番目の引数として渡した時はそっちを使うようにするという風になってる。これだけ見ると「また引数増やすのかよ、しかも新方式(ハッシュによる指定)もサポートするのかよ。マンドクセ。」と思うところだけど、2番目に提出されたパッチでは引数の数の方は変更が無くて、aRelatedToCurrent
に相当する引数を指定したい時はハッシュを使わなければならないようになってる。実際にチェックインされた内容は後者のパッチの通りだ。
この事から、今後は新方式のAPI(新しいタブの挙動はgBrowser.addTab()
とgBrowser.loadOneTab()
の第2引数でハッシュで指定する)が標準となり、旧方式のAPI(gBrowser.addTab()
とgBrowser.loadOneTab()
に沢山の引数を渡す)はあくまで後方互換性のためにのみ残されている、という風に考えることができる。
参考までに、新旧それぞれの書き方を示しておこう。
// new API
var newTab = gBrowser.addTab('http://www.example.com/', {
referrerURI : referrer, // nsIURI
charset : 'Shift_JIS',
postData : null,
inBackground : true,
allowThirdPartyFixup : false,
relatedToCurrent : false
});
// old API
var newTab = gBrowser.addTab(
'http://www.example.com/',
referrer, // nsIURI
'Shift_JIS',
null, // postData
true, // inBackgorund
false // allowThirdPartyFixup
);
本当だったらもっと早く、Firefox 3.0になる前の時点でこういう事は済ませておくべきだったんだろうと思う(そのための「メジャーバージョン」でしょ?)。でもまあ、いつかはやらなきゃいけないことだ。新しい引数が追加されるというタイミングは、移行のいいきっかけではある。
の末尾に2020年11月30日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2009-09-16_addTab.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。
writeback message: Ready to post a comment.