diff --git a/4chan_x.js b/4chan_x.js index 5bb9b0ef8..0b6473fe6 100644 --- a/4chan_x.js +++ b/4chan_x.js @@ -177,16 +177,17 @@ return el; }, dragstart: function(e) { - var el, rect; + var d, el, rect; ui.el = el = e.target.parentNode; - document.body.className = 'noselect'; + d = document; + d.body.className = 'noselect'; + d.addEventListener('mousemove', ui.drag, true); + d.addEventListener('mouseup', ui.dragend, true); rect = el.getBoundingClientRect(); ui.dx = e.clientX - rect.left; ui.dy = e.clientY - rect.top; ui.width = document.body.clientWidth - el.offsetWidth; - ui.height = document.body.clientHeight - el.offsetHeight; - document.addEventListener('mousemove', ui.drag, true); - return document.addEventListener('mouseup', ui.dragend, true); + return ui.height = document.body.clientHeight - el.offsetHeight; }, drag: function(e) { var bottom, el, left, right, top; @@ -211,14 +212,15 @@ return el.style.bottom = bottom; }, dragend: function() { - var el, id; - document.removeEventListener('mousemove', ui.drag, true); - document.removeEventListener('mouseup', ui.dragend, true); + var d, el, id; el = ui.el; id = el.id; localStorage["" + id + "Left"] = el.style.left; localStorage["" + id + "Top"] = el.style.top; - return document.body.className = ''; + d = document; + d.body.className = ''; + d.removeEventListener('mousemove', ui.drag, true); + return d.removeEventListener('mouseup', ui.dragend, true); } }; d = document; diff --git a/script.coffee b/script.coffee index 1a2366686..e4c765cc9 100644 --- a/script.coffee +++ b/script.coffee @@ -98,7 +98,10 @@ ui = el dragstart: (e) -> ui.el = el = e.target.parentNode - document.body.className = 'noselect' + d = document + d.body.className = 'noselect' + d.addEventListener 'mousemove', ui.drag, true + d.addEventListener 'mouseup', ui.dragend, true #distance from pointer to el edge is constant; calculate it here. # XXX opera reports el.offsetLeft / el.offsetTop as 0 rect = el.getBoundingClientRect() @@ -107,8 +110,6 @@ ui = #factor out el from document dimensions ui.width = document.body.clientWidth - el.offsetWidth ui.height = document.body.clientHeight - el.offsetHeight - document.addEventListener 'mousemove', ui.drag, true - document.addEventListener 'mouseup', ui.dragend, true drag: (e) -> {el} = ui left = e.clientX - ui.dx @@ -124,13 +125,17 @@ ui = el.style.top = top el.style.bottom = bottom dragend: -> - document.removeEventListener 'mousemove', ui.drag, true - document.removeEventListener 'mouseup', ui.dragend, true - {el} = ui #{id} = {el} = ui doesn't work + #{id} = {el} = ui + #equivalent to + #{id} = ui; {el} = ui + {el} = ui {id} = el localStorage["#{id}Left"] = el.style.left localStorage["#{id}Top"] = el.style.top - document.body.className = '' + d = document + d.body.className = '' + d.removeEventListener 'mousemove', ui.drag, true + d.removeEventListener 'mouseup', ui.dragend, true #convenience d = document