ブックマークのプロパティダイアログをresizableにする
ブックマークレットを編集しようと右クリックからプロパティを見たのだが、プロパティのダイアログがリサイズ不可能で非常に見難い。リサイズ可能にしてしまえと思い立ってやってみたが、実装方法がいつにも増してアレ。ダイアログを開く関数をオーバーライドしたのだ。たった一言no
をyes
に代える為だけに...。
/** * Resizable dialog of bookmark property * @see chrome://browser/content/bookmarks/bookmarks.js * BookmarksCommand.penBookmarkProperties */ if ( BookmarksCommand ){ BookmarksCommand.openBookmarkProperties = function(aSelection){ // Bookmark Properties dialog is only ever opened with one selection // (command is disabled otherwise) var bookmark = aSelection.item[0].Value; var value = {}; openDialog("chrome://browser/content/bookmarks/bookmarksProperties.xul", "", "centerscreen,chrome,modal,resizable=yes", bookmark, value); return value.ok; } }
ところで、windowオブジェクトに[http://www.xulplanet.com/references/objref/Window.html#method_setResizable:title=setResizable]
というメソッドがあるようなのだが....使っても効果なし。DOM Inspectorで調べてもそんなメソッドは見つからないし、MDC(DOM:window)からも取り除かれているみたい。
このメソッドが使えないとなるとリサイズ可能・不可能はopen
,openDialog
関数のオプションしかなくなってしまうような...。これから開くウィンドウの設定は弄れても、自身のウィンドウを弄れないって...何だか気持ち悪いなぁ。
追記
リサイズ可能にする方法をメーリングリストにも投げてみただが、やはり、というか、どうも方法は無さそうな雰囲気。代わりに、
eval( 'BookmarksCommand.openBookmarkProperties = '+ BookmarksCommand.openBookmarkProperties.toSource().replace(/resizable=no/, 'resizable=yes') );
という方法を教えて頂いた*1。Piroさんありがとうございます。
また、setResizable
について、Gomitaさんのコメントの通り互換性のためで実際は何もしないという悲しい存在であることが判明。一応謎は解けたわけでちょっとすっきり。Gomitaさんありがとうございます。
*1:ソースはちょっと改変してます。