響應XUL元素的resize事件

2021-06-27 18:30:01 字數 919 閱讀 7777

在gecko xul體系裡,控制項元素(button, label等)除了window之外是沒有resize事件的,甚至到最近的31.0版本仍沒有支援,我估計以後也很難見到元素的resize事件了。因為mozilla的人當初設計xul的時候,定義了hbox/vbox元素以及flex屬性,甚至支援overflow和text-overflow樣式,就是為了讓開發人員少操心元素的尺寸變化問題,如果過分關注元素的resize事件,他們一定會說是開發人員自己的思路不對。但有時我在開發自己的擴充套件時,又不得不去關心元素的尺寸,比如乙個vbox,裡面有一些子元素,當這個vbox寬度小於一定值時,裡面的子元素會在顯示和排列方式上出現一些變化。這種情況下,就不得不想點辦法來監控元素的尺寸了。

我想到的是最笨的辦法,用計時器,interval盡可能小一點,但也不要太小,50毫秒差不多,每個時鐘週期去檢測元素的寬高,發現有變化時通知出去。為了讓這個功能形成乙個完整的模組,我用到了xbl,**如下:

null

null

50

在全域性樣式表中把

這個resizemonitor用-moz-binding繫結一下,就可以使用這個元素標籤了。可以把它放在所監視的元素的子結點下,也可以把它放到當前文件的任意乙個位置,告訴它監控目標的id值就可以了。當發現目標的寬高發生改變,目標元素會觸發乙個resize事件,這個事件是自定義的。

用法1:

監控父元素textbox的尺寸變化,若發生改變,textbox將得到乙個resize事件,

textbox.addeventlistener("resize", function() );

用法2:

指定監控物件,計時器預設間隔為50毫秒。

BPMN這點事 BPMN的元素

我們使用bpmn元素進行建模,bpmn的元素分為五個類別 圖10 9bpmn的元素分類 流物件 flow objects 流物件是定義業務流程的主要圖形元素。它進一步細分為三個類別,分別是事件 events 活動 activities 和閘道器 gateways 資料 data 它分為四個類別 資料...

html元素重疊 下面的元素仍然響應事件的解決

其實就是pointer events和elementfrompoint 對於兩個div,div a覆蓋了div b,但是要讓div b能夠接收到滑鼠的事件,有兩種方法 1.在firefox chrome等支援css3瀏覽器中,有個css屬性叫pointer events,設定div a的 point...

ie 透明元素遮擋的元素仍能響應滑鼠事件

如果乙個元素被另乙個元素遮蓋,不論遮蓋元素的背景色是否是 transparent 也不論遮蓋元素的透明度是否為全透明,被遮蓋元素是不能響應使用者的滑鼠事件的。關於 background color 請參考 w3c css 2.1 規範 14.2.1 background color 中的內容。關於 ...