以下のテスト コードでは、canvas.offsetLeft に従って mbox.style.left を更新したいのですが、レイアウトの変更によりキャンバスが再配置されたときに関数 repositionBox() が呼び出されません。canvas.offsetLeft の変更を検出する方法に関するヒントはありますか? (同じ質問が canvas.offsetTop にも当てはまります。)
DivElement createMessagebox(String id, CanvasElement c) {
DivElement mbox = new DivElement();
mbox.id = id;
int left = 10 + canvas.offsetLeft;
int top = 28 + canvas.offsetTop;
mbox.style.border = '2px solid #FFF';
mbox.style.zIndex = "1";
mbox.style.position = "absolute";
mbox.style.width = "300px";
mbox.style.color = "lightgreen";
mbox.style.background = "rgba(50,50,50,0.7)";
mbox.style.textAlign = "left";
mbox.style.padding = "2px";
mbox.style.fontSize = 'x-small';
void repositionBox(Event e) {
int left = 10 + canvas.offsetLeft;
int top = 28 + canvas.offsetTop;
mbox.style.left = "${left}px";
mbox.style.top = "${top}px";
print("repositionBox: event=$e: left=${mbox.style.left} top=${mbox.style.top}");
}
repositionBox(null);
c.onChange.listen(repositionBox);
return mbox;
}