2017 年 6 月 のアーカイブ

WebExtensionsで作成したウィンドウでスクロールできない

2017 年 6 月 5 日 月曜日 by amano

2017/6/6追記:Firefox nightly(55)では想定通りの挙動だったので、バグだった模様。

NicoLive HelperをWebExtensions化するのにあたって、TCP通信ができないのでそもそも移植できないのだが、UIは先に作れるのでちまちま作成している最中。

さて、普通のウェブサイト作る感覚で画面作成中に、それなりに作成が進んでから子が親ブロックサイズを越えた場合にスクロールバーが表示されず、スクロールも効かず、はて?と思いながらテストしていると height を直接指定(パーセント指定はNG)するとスクロール可になるのが分かって、リサイズイベントのたびに必要な部分の height を計算して指定をするようにしています。HTMLも入り組んでいるし何かがおかしい(指定が足りない)のかなぁとあまり気に留めず、次に設定画面を作る時にまだシンプルな段階でスクロールについてテストすると、やっぱりスクロールできない。自分の作りがおかしいんじゃなくてFirefox自身がおかしいんじゃないかと、気になるところを確認していくと、type指定で normal 以外のときはスクロールできないのが分かった。

let creating = browser.windows.create( {
    url: "options.html",
    type: "panel",   // ←ここの指定がnormalだとスクロールできるウィンドウができる
    width: 640,
    height: 480
} );

とはいえ、normal指定すると通常のブラウザと同様にツールバーなどが表示されてしまい、UI作る用ウィンドウじゃないでしょう状態のため、リサイズに合わせて height 指定するしかなさそう。

Firefoxの仕様なのかバグなのか、適当なキーワードでググってみたものの、パッと探しただけだとそれっぽいネタが見つからなかったので、どっちやら。