Skip to content

Commit cc0999a

Browse files
committed
兼容解决IE下offsetX/offsetY计算规则不同的问题
1 parent f83518c commit cc0999a

File tree

1 file changed

+30
-30
lines changed

1 file changed

+30
-30
lines changed

src/runtime/drag.js

+30-30
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ define(function(require, exports, module) {
3838
}
3939

4040
var downX, downY;
41+
var editorRect;
4142
var MOUSE_HAS_DOWN = 0;
4243
var MOUSE_HAS_UP = 1;
4344
var flag = MOUSE_HAS_UP;
@@ -82,44 +83,43 @@ define(function(require, exports, module) {
8283
downY = e.originEvent.clientY;
8384
maxX = minder.getPaper().container.clientWidth;
8485
maxY = minder.getPaper().container.clientHeight;
86+
editorRect = minder.getPaper().container.getBoundingClientRect();
8587
});
8688

8789
minder.on('mousemove', function(e) {
88-
if (fsm.state() === 'drag' && flag == MOUSE_HAS_DOWN && minder.getSelectedNode()
90+
if (flag == MOUSE_HAS_DOWN
91+
&& minder.getSelectedNode()
8992
&& (Math.abs(downX - e.originEvent.clientX) > 10
9093
|| Math.abs(downY - e.originEvent.clientY) > 10)) {
91-
osx = e.originEvent.offsetX;
92-
osy = e.originEvent.offsetY;
93-
if (osx < 10) {
94-
move('right', 10 - osx);
95-
} else if (osx > maxX - 10) {
96-
move('left', 10 + osx - maxX);
97-
} else {
98-
freeHorizen = true;
99-
}
100-
if (osy < 10) {
101-
move('bottom', osy);
102-
} else if (osy > maxY - 10) {
103-
move('top', 10 + osy - maxY);
94+
if (fsm.state() === 'drag') {
95+
osx = e.originEvent.clientX;
96+
osy = e.originEvent.clientY - editorRect.top;
97+
98+
if (osx < 10) {
99+
move('right', 10 - osx);
100+
} else if (osx > maxX - 10) {
101+
move('left', 10 + osx - maxX);
102+
} else {
103+
freeHorizen = true;
104+
}
105+
if (osy < 10) {
106+
move('bottom', osy);
107+
} else if (osy > maxY - 10) {
108+
move('top', 10 + osy - maxY);
109+
} else {
110+
freeVirtical = true;
111+
}
112+
if (freeHorizen && freeVirtical) {
113+
freeHorizen = freeVirtical = false;
114+
move(false);
115+
}
104116
} else {
105-
freeVirtical = true;
106-
}
107-
if (freeHorizen && freeVirtical) {
108-
freeHorizen = freeVirtical = false;
109-
move(false);
110-
}
111-
}
112-
if (fsm.state() != 'drag'
113-
&& flag == MOUSE_HAS_DOWN
114-
&& minder.getSelectedNode()
115-
&& (Math.abs(downX - e.originEvent.clientX) > 10
116-
|| Math.abs(downY - e.originEvent.clientY) > 10)) {
117+
if (fsm.state() == 'hotbox') {
118+
hotbox.active(Hotbox.STATE_IDLE);
119+
}
117120

118-
if (fsm.state() == 'hotbox') {
119-
hotbox.active(Hotbox.STATE_IDLE);
121+
return fsm.jump('drag', 'user-drag');
120122
}
121-
122-
return fsm.jump('drag', 'user-drag');
123123
}
124124
});
125125

0 commit comments

Comments
 (0)