Skip to content

Instantly share code, notes, and snippets.

@edubkendo
Created May 29, 2013 10:50
Show Gist options
  • Save edubkendo/5669460 to your computer and use it in GitHub Desktop.
Save edubkendo/5669460 to your computer and use it in GitHub Desktop.
App = require('app')
App.PagesView = Em.View.extend
templateName: require('templates/pages')
click: (event) ->
# console.log event
elem = event.srcElement
x = event.pageX
y = event.pageY
getWordAtPoint = (elem, x, y) ->
if elem.nodeType is elem.TEXT_NODE
range = elem.ownerDocument.createRange()
range.selectNodeContents(elem)
currentPos = 0
endPos = range.endOffset
while currentPos+1 < endPos
# console.log range
try
range.setStart(elem, currentPos)
catch e
if e
break
range.setEnd(elem, currentPos+1)
if(range.getBoundingClientRect().left <= x && range.getBoundingClientRect().right >= x && range.getBoundingClientRect().top <= y && range.getBoundingClientRect().bottom >= y)
range.expand("word")
ret = range.toString()
range.detach()
console.log ret
currentPos += 1
else
for i in [0..elem.childNodes.length]
range = elem.childNodes[i]?.ownerDocument.createRange()
range?.selectNodeContents(elem.childNodes[i])
if(range?.getBoundingClientRect().left <= x && range?.getBoundingClientRect().right >= x && range?.getBoundingClientRect().top <= y && range?.getBoundingClientRect().bottom >= y)
range?.detach()
return(getWordAtPoint(elem.childNodes[i], x, y))
else
range?.detach()
return null
getWordAtPoint(elem, x, y)
# console.log document.caretRangeFromPoint(event.pageX, event.pageY).startContainer.data
# console.log event
return false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment