在我的測試代碼中,我想根據canvas.offsetLeft更新mbox.style.left,但是當由於佈局更改而重新定位畫布時,函數repositionBox()不會被調用。有關如何檢測canvas.offsetLeft中的更改的任何提示? (同樣的問題也適用於canvas.offsetTop爲好。)如何在Dart中捕獲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;
}