@@ -44,6 +44,28 @@ function matchesSelector(el, selector) {
4444 }
4545}
4646
47+ function addEvent ( el , event , handler ) {
48+ if ( ! el ) { return ; }
49+ if ( el . attachEvent ) {
50+ el . attachEvent ( 'on' + event , handler ) ;
51+ } else if ( el . addEventListener ) {
52+ el . addEventListener ( event , handler , true ) ;
53+ } else {
54+ el [ 'on' + event ] = handler ;
55+ }
56+ }
57+
58+ function removeEvent ( el , event , handler ) {
59+ if ( ! el ) { return ; }
60+ if ( el . detachEvent ) {
61+ el . detachEvent ( 'on' + event , handler ) ;
62+ } else if ( el . removeEventListener ) {
63+ el . removeEventListener ( event , handler , true ) ;
64+ } else {
65+ el [ 'on' + event ] = null ;
66+ }
67+ }
68+
4769module . exports = React . createClass ( {
4870 displayName : 'Draggable' ,
4971
@@ -229,7 +251,8 @@ module.exports = React.createClass({
229251
230252 this . props . onStart ( e , createUIEvent ( this ) ) ;
231253
232- window . addEventListener ( 'mousemove' , this . handleMouseMove ) ;
254+ addEvent ( window , 'mousemove' , this . handleMouseMove ) ;
255+ addEvent ( window , 'mouseup' , this . handleMouseUp ) ;
233256 } ,
234257
235258 handleMouseUp : function ( e ) {
@@ -243,7 +266,8 @@ module.exports = React.createClass({
243266
244267 this . props . onStop ( e , createUIEvent ( this ) ) ;
245268
246- window . removeEventListener ( 'mousemove' , this . handleMouseMove ) ;
269+ removeEvent ( window , 'mousemove' , this . handleMouseMove ) ;
270+ removeEvent ( window , 'mouseup' , this . handleMouseUp ) ;
247271 } ,
248272
249273 handleMouseMove : function ( e ) {
0 commit comments