2004/01/01(木) [n年前の日記]
#4 [debian] Mozilla Firebird版のOptmoz
Mozilla Firebirdを使ったら、ホイールスクロールできないページがあった。マウスジェスチャのAll in oneを使うと不具合が起きるらしい。仕方ないので、All in oneは無効化して、
_Optimoz
を入れてみた。Mozilla Firebird版は、Mozilla版とは違って、右ボタンでマウスジェスチャが利用できるのでありがたい。
*1
各動作の割り振りも、今のバージョンなら、ある程度カスタマイズできる。ありがたい。しかし、Uにページ先頭、Dにページ最後へのスクロールを割り振ろうと思ったところ、該当機能が存在しなかった。仕方ないので、UとDに対しては、built-inではなくcustomを選んで、javascriptのコードを割り振った。スクロールをさせる為の記述が一般的なWebページの場合とは異なってるようで、/usr/lib/mozilla-firebird/chrome/mozgest/中のjsファイルから、それらしい部分をコピペして書いた。
しかし、コレを使うと、 _ContextMenu Extensions の「ページの先頭へ」「ページの最後へ」の表示位置が狂う。また、 _こういったページ では正常に動かず、途中でスクロールが止まる。ページの縦幅を正常に取得できていないか、もしくはscrollTo()が正常に動いていないのだろうな。せめて異常値が返ってきた事だけでも検出できれば、強制的に大きな座標値を入れて誤魔化す事もできるかもしれないけど、その後のブラウザ動作がどうなるかわからんのでヤバそう。
function scroll_win(arg) {
// arg : -1 = top / 1 = bottom
var dvy = 1.5; // speed ?
var cmax = 6; // number of loops (=0 ... no loop)
var ay = 16; // adjust when scrolling to the bottom of a page
var sy = 0;
var dh = 0;
var wh = 0;
var ww = globalSrcEvent.view;
// var ww = window;
var dc = globalSrcEvent.view.document;
// var dc = document;
var msg;
if(dc.layers || dc.getElementById) {
sy = ww.pageYOffset;
dh = dc.height;
wh = ww.innerHeight;
msg = "sy=" + sy + "/dh=" + dh + "/wh=" + wh;
}
if ( dh > 0 && wh > 0 && dh > wh ) {
var tgty = (arg > 0)? (dh + ay - wh) : 0;
msg += ("/tgty=" + tgty);
if ( (arg == -1 && sy > tgty) || (arg == 1 && sy < tgty) ) {
if ( cmax > 0 ) {
for ( var i=0; i < cmax; i++ ) {
if ( tgty != sy ) {
var dy = ((tgty - sy) / dvy);
sy += dy;
dy = (dy > 0)? Math.ceil(dy) : Math.floor(dy);
ww.scrollBy(0,dy);
}
}
}
ww.scrollTo(0,tgty);
}
}
msg += ("/now sy="+ ww.pageYOffset);
// ww.alert(msg);
}
scroll_win(-1);
scroll_win() に与える値を、-1にすれば先頭へ、1にすれば最後へスクロール。個人的に、一瞬で切り替わると何が起きたか混乱する事が多いので、加減速してスクロールするようにしてるけど、var cmax = 0; にすれば即座に切り替わる。しかし、コレを使うと、 _ContextMenu Extensions の「ページの先頭へ」「ページの最後へ」の表示位置が狂う。また、 _こういったページ では正常に動かず、途中でスクロールが止まる。ページの縦幅を正常に取得できていないか、もしくはscrollTo()が正常に動いていないのだろうな。せめて異常値が返ってきた事だけでも検出できれば、強制的に大きな座標値を入れて誤魔化す事もできるかもしれないけど、その後のブラウザ動作がどうなるかわからんのでヤバそう。
*1: Mozilla版の場合、コンテキストメニューが優先されてしまうので、右ボタンは使えない。左ボタンに割り付けるとテキストが選択されてしまって使いにくいので、必然的に中ボタンに割り付けるしかないのだけど、一般的なホイールマウスは、えてしてホイールクリックが左右ボタンより利用しにくいので、操作がツライ。
[ ツッコむ ]
以上です。