@@ -38,33 +38,35 @@ Elm.Native.Mouse = function(elm) {
3838 return Utils.Tuple2(posx, posy);
3939 }
4040
41+ var node = elm.node.tagName === "BODY" ? document : elm.node;
42+
4143 function click(e) {
4244 var hasListener1 = elm.notify(isClicked.id, true);
4345 var hasListener2 = elm.notify(clicks.id, Utils.Tuple0);
4446 elm.notify(isClicked.id, false);
4547 if (!hasListener1 && !hasListener2)
46− elm.node.removeEventListener('click', click);
48+ node.removeEventListener('click', click);
4749 }
4850
4951 function down(e) {
5052 var hasListener = elm.notify(isDown.id, true);
51− if (!hasListener) elm.node.removeEventListener('mousedown', down);
53+ if (!hasListener) node.removeEventListener('mousedown', down);
5254 }
5355
5456 function up(e) {
5557 var hasListener = elm.notify(isDown.id, false);
56− if (!hasListener) elm.node.removeEventListener('mouseup', up);
58+ if (!hasListener) node.removeEventListener('mouseup', up);
5759 }
5860
5961 function move(e) {
6062 var hasListener = elm.notify(position.id, getXY(e));
61− if (!hasListener) elm.node.removeEventListener('mousemove', move);
63+ if (!hasListener) node.removeEventListener('mousemove', move);
6264 }
6365
64− elm.node.addEventListener('click' , click);
65− elm.node.addEventListener('mousedown', down);
66− elm.node.addEventListener('mouseup' , up);
67− elm.node.addEventListener('mousemove', move);
66+ node.addEventListener('click' , click);
67+ node.addEventListener('mousedown', down);
68+ node.addEventListener('mouseup' , up);
69+ node.addEventListener('mousemove', move);
6870
6971 return elm.Native.Mouse = {
7072 position: position,