Class: Browser::Event

Inherits:
Object show all
Defined in:
lib/browser/event.rb

Overview

Wrapper for JS events

Instance Method Summary collapse

Constructor Details

#initialize(native) ⇒ Event



5
6
7
# File 'lib/browser/event.rb', line 5

def initialize native
  @native = native
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object

Return properties on the event not covered by Ruby methods.



76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/browser/event.rb', line 76

def method_missing name, *args
  property = name.gsub(/_[a-z]/) { |match| match[-1, 1].upcase }
  value = `#@native[property]`

  if `!!value && #{Proc === value}`
    value.call(*args)
  elsif `value == null`
    nil
  else
    value
  end
end

Instance Method Details

#alt?Boolean



57
58
59
# File 'lib/browser/event.rb', line 57

def alt?
  `#@native.altKey`
end

#codeNumeric



71
72
73
# File 'lib/browser/event.rb', line 71

def code
  `#@native.keyCode`
end

#ctrl?Boolean



51
52
53
# File 'lib/browser/event.rb', line 51

def ctrl?
  `#@native.ctrlKey`
end

#meta?Boolean



39
40
41
# File 'lib/browser/event.rb', line 39

def meta?
  `#@native.metaKey`
end

#preventBrowser::Event Also known as: prevent_default

Prevent the runtime from executing this event’s default behavior. For example, prevent navigation after clicking a link.



13
14
15
16
# File 'lib/browser/event.rb', line 13

def prevent
  `#@native.preventDefault()`
  self
end

#prevented?Boolean Also known as: default_prevented?



32
33
34
# File 'lib/browser/event.rb', line 32

def prevented?
  `#@native.defaultPrevented`
end

#shift?Boolean



45
46
47
# File 'lib/browser/event.rb', line 45

def shift?
  `#@native.shiftKey`
end

#stop_propagationObject

Prevent the runtime from bubbling this event up the hierarchy. This is typically used to keep an event local to the element on which it was triggered, such as keeping a click event on a button from unintentionally triggering a handler on a parent element.



25
26
27
28
# File 'lib/browser/event.rb', line 25

def stop_propagation
  `#@native.stopPropagation()`
  self
end

#targetBrowser::Element

TODO:

Handle non-DOM events here

The target for this event



65
66
67
# File 'lib/browser/event.rb', line 65

def target
  Element.new(`#@native.target`)
end

#to_nJS



90
91
92
# File 'lib/browser/event.rb', line 90

def to_n
  @native
end