浏览器窗口大小发生变化时的扩展通知

时间:2012-07-28 09:32:35

标签: javascript firefox javascript-events firefox-addon

我开发了一个firefox扩展,需要在浏览器窗口大小发生变化时得到通知。

我使用了gBrowser.addeventListener("resize",my_funcion,false); 在我的.js扩展名文件中。 但是,当您通过拖动更改浏览器窗口大小时,将会经常通知此信息。完成调整大小后,我需要窗口参数的最终值,不在调整大小期间。

我应该注册哪个事件来执行此操作?

1 个答案:

答案 0 :(得分:1)

gBrowser.addeventListener("resize",是否会向窗口或tabbrowser附加调整大小监听器?我一直认为gBrowser是tabbrowser元素的快捷方式。

当我不得不听窗口调整大小事件时,队列系统似乎是最好的选择,例如。

var queue=0;
var chromeWinOuterHeight;
var timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer);

function chromeWinResize(e){
    queue++;
    timer.initWithCallback(function(){
        if(queue>1){
            queue--;
        }
        else if(chromeWinOuterHeight !== e.target.outerHeight){
            //do stuff
        }
        chromeWinOuterHeight = e.target.outerHeight;
    }, 500, Components.interfaces.nsITimer.TYPE_ONE_SHOT);
};
chromeWindow.addEventListener('resize',chromeWinResize,false);