diff options
Diffstat (limited to 'content_scripts/injected.coffee')
| -rw-r--r-- | content_scripts/injected.coffee | 20 | 
1 files changed, 20 insertions, 0 deletions
| diff --git a/content_scripts/injected.coffee b/content_scripts/injected.coffee new file mode 100644 index 00000000..d833d09c --- /dev/null +++ b/content_scripts/injected.coffee @@ -0,0 +1,20 @@ +# The code in `injectedCode()`, below, is injected into the page's own execution context. +# +# This is based on method 2b here: http://stackoverflow.com/a/9517879, and +# @mrmr1993's #1167. + +window.vimiumOnClickAttributeName = "_vimium-has-onclick-listener" + +injectedCode = (vimiumOnClickAttributeName) -> +  # Note the presence of "click" listeners installed with `addEventListener()` (for link hints). +  _addEventListener = Element::addEventListener + +  Element::addEventListener = (type, listener, useCapture) -> +    @setAttribute vimiumOnClickAttributeName, "" if type == "click" +    _addEventListener.apply this, arguments + +script = document.createElement "script" +script.textContent = "(#{injectedCode.toString()})('#{vimiumOnClickAttributeName}')" +(document.head || document.documentElement).appendChild script +script.remove() + | 
