History

Normalize event.target for old browsers incorrectly handling SVG elements

Thibaut Courouble committed 9 years ago

Commit 30dd32c1 parent 53f666a16 files · +31 −21Browse files

Unified · Split

16 files
  1. assets/javascripts/lib/page.coffee +1 −1
  2. assets/javascripts/lib/util.coffee +3 −0
  3. assets/javascripts/views/content/content.coffee +1 −1
  4. assets/javascripts/views/content/entry_page.coffee +1 −1
  5. assets/javascripts/views/content/offline_page.coffee +1 −1
  6. assets/javascripts/views/content/root_page.coffee +1 −1
  7. assets/javascripts/views/layout/document.coffee +3 −2
  8. assets/javascripts/views/layout/menu.coffee +2 −1
  9. assets/javascripts/views/list/list_focus.coffee +3 −2
  10. assets/javascripts/views/list/list_fold.coffee +1 −1
  11. assets/javascripts/views/list/list_select.coffee +3 −2
  12. assets/javascripts/views/list/paginated_list.coffee +3 −2
  13. assets/javascripts/views/misc/notif.coffee +3 −2
  14. assets/javascripts/views/sidebar/doc_list.coffee +3 −2
  15. assets/javascripts/views/sidebar/results.coffee +1 −1
  16. assets/javascripts/views/sidebar/sidebar.coffee +1 −1
assets/javascripts/lib/page.coffee+1−1
@@ -170,7 +170,7 @@ onclick = (event) -> · 169 unmodified lines
170 catch170 catch
171 return171 return
172 172
173 link = event.target173 link = $.eventTarget(event)
174 link = link.parentNode while link and link.tagName isnt 'A'174 link = link.parentNode while link and link.tagName isnt 'A'
175 175
176 if link and not link.target and isSameOrigin(link.href)176 if link and not link.target and isSameOrigin(link.href)
assets/javascripts/lib/util.coffee+3−0
@@ -60,6 +60,9 @@ $.stopEvent = (event) -> · 59 unmodified lines
60 event.stopImmediatePropagation()60 event.stopImmediatePropagation()
61 return61 return
62 62
63$.eventTarget = (event) ->
64 event.target.correspondingUseElement || event.target
65
63#66#
64# Manipulation67# Manipulation
65#68#
assets/javascripts/views/content/content.coffee+1−1
@@ -169,7 +169,7 @@ class app.views.Content extends app.View · 168 unmodified lines
169 return169 return
170 170
171 onClick: (event) =>171 onClick: (event) =>
172 link = $.closestLink event.target, @el172 link = $.closestLink $.eventTarget(event), @el
173 if link and @isExternalUrl link.getAttribute('href')173 if link and @isExternalUrl link.getAttribute('href')
174 $.stopEvent(event)174 $.stopEvent(event)
175 $.popup(link)175 $.popup(link)
assets/javascripts/views/content/entry_page.coffee+1−1
@@ -140,7 +140,7 @@ class app.views.EntryPage extends app.View · 139 unmodified lines
140 true140 true
141 141
142 onClick: (event) =>142 onClick: (event) =>
143 target = event.target143 target = $.eventTarget(event)
144 if target.hasAttribute 'data-retry'144 if target.hasAttribute 'data-retry'
145 $.stopEvent(event)145 $.stopEvent(event)
146 @load()146 @load()
assets/javascripts/views/content/offline_page.coffee+1−1
@@ -50,7 +50,7 @@ class app.views.OfflinePage extends app.View · 49 unmodified lines
50 return50 return
51 51
52 onClick: (event) =>52 onClick: (event) =>
53 el = event.target53 el = $.eventTarget(event)
54 if action = el.getAttribute('data-action')54 if action = el.getAttribute('data-action')
55 doc = @docByEl(el)55 doc = @docByEl(el)
56 action = 'install' if action is 'update'56 action = 'install' if action is 'update'
assets/javascripts/views/content/root_page.coffee+1−1
@@ -30,7 +30,7 @@ class app.views.RootPage extends app.View · 29 unmodified lines
30 onRoute: ->30 onRoute: ->
31 31
32 onClick: (event) =>32 onClick: (event) =>
33 if event.target.hasAttribute 'data-hide-intro'33 if $.eventTarget(event).hasAttribute 'data-hide-intro'
34 $.stopEvent(event)34 $.stopEvent(event)
35 @hideIntro()35 @hideIntro()
36 return36 return
assets/javascripts/views/layout/document.coffee+3−2
@@ -71,9 +71,10 @@ class app.views.Document extends app.View · 70 unmodified lines
71 return71 return
72 72
73 onClick: (event) ->73 onClick: (event) ->
74 return unless event.target.hasAttribute('data-behavior')74 target = $.eventTarget(event)
75 return unless target.hasAttribute('data-behavior')
75 $.stopEvent(event)76 $.stopEvent(event)
76 switch event.target.getAttribute('data-behavior')77 switch target.getAttribute('data-behavior')
77 when 'back' then history.back()78 when 'back' then history.back()
78 when 'reload' then window.location.reload()79 when 'reload' then window.location.reload()
79 when 'reboot' then window.location = '/'80 when 'reboot' then window.location = '/'
assets/javascripts/views/layout/menu.coffee+2−1
@@ -10,7 +10,8 @@ class app.views.Menu extends app.View · 9 unmodified lines
10 return10 return
11 11
12 onClick: (event) ->12 onClick: (event) ->
13 event.target.blur() if event.target.tagName is 'A'13 target = $.eventTarget(event)
14 target.blur() if target.tagName is 'A'
14 return15 return
15 16
16 onGlobalClick: (event) =>17 onGlobalClick: (event) =>
assets/javascripts/views/list/list_focus.coffee+3−2
@@ -117,6 +117,7 @@ class app.views.ListFocus extends app.View · 116 unmodified lines
117 117
118 onClick: (event) =>118 onClick: (event) =>
119 return if event.which isnt 1 or event.metaKey or event.ctrlKey119 return if event.which isnt 1 or event.metaKey or event.ctrlKey
120 if event.target.tagName is 'A'120 target = $.eventTarget(event)
121 @focus event.target, silent: true121 if target.tagName is 'A'
122 @focus target, silent: true
122 return123 return
assets/javascripts/views/list/list_fold.coffee+1−1
@@ -54,7 +54,7 @@ class app.views.ListFold extends app.View · 53 unmodified lines
54 onClick: (event) =>54 onClick: (event) =>
55 return if event.which isnt 1 or event.metaKey or event.ctrlKey55 return if event.which isnt 1 or event.metaKey or event.ctrlKey
56 return unless event.pageY # ignore fabricated clicks56 return unless event.pageY # ignore fabricated clicks
57 el = event.target57 el = $.eventTarget(event)
58 el = el.parentNode if el.parentNode.tagName.toUpperCase() is 'SVG'58 el = el.parentNode if el.parentNode.tagName.toUpperCase() is 'SVG'
59 59
60 if el.classList.contains @constructor.handleClass60 if el.classList.contains @constructor.handleClass
assets/javascripts/views/list/list_select.coffee+3−2
@@ -37,6 +37,7 @@ class app.views.ListSelect extends app.View · 36 unmodified lines
37 37
38 onClick: (event) =>38 onClick: (event) =>
39 return if event.which isnt 1 or event.metaKey or event.ctrlKey39 return if event.which isnt 1 or event.metaKey or event.ctrlKey
40 if event.target.tagName is 'A'40 target = $.eventTarget(event)
41 @select event.target41 if target.tagName is 'A'
42 @select target
42 return43 return
assets/javascripts/views/list/paginated_list.coffee+3−2
@@ -83,7 +83,8 @@ class app.views.PaginatedList extends app.View · 82 unmodified lines
83 return83 return
84 84
85 onClick: (event) =>85 onClick: (event) =>
86 if event.target.tagName is 'SPAN' # link86 target = $.eventTarget(event)
87 if target.tagName is 'SPAN' # link
87 $.stopEvent(event)88 $.stopEvent(event)
88 @paginate event.target89 @paginate target
89 return90 return
assets/javascripts/views/misc/notif.coffee+3−2
@@ -51,8 +51,9 @@ class app.views.Notif extends app.View · 50 unmodified lines
51 51
52 onClick: (event) =>52 onClick: (event) =>
53 return if event.which isnt 153 return if event.which isnt 1
54 return if event.target.hasAttribute('data-behavior')54 target = $.eventTarget(event)
55 if event.target.tagName isnt 'A' or event.target.classList.contains('_notif-close')55 return if target.hasAttribute('data-behavior')
56 if target.tagName isnt 'A' or target.classList.contains('_notif-close')
56 $.stopEvent(event)57 $.stopEvent(event)
57 @hide()58 @hide()
58 return59 return
assets/javascripts/views/sidebar/doc_list.coffee+3−2
@@ -164,10 +164,11 @@ class app.views.DocList extends app.View · 163 unmodified lines
164 return164 return
165 165
166 onClick: (event) =>166 onClick: (event) =>
167 if @disabledTitle and $.hasChild(@disabledTitle, event.target) and event.target.tagName isnt 'A'167 target = $.eventTarget(event)
168 if @disabledTitle and $.hasChild(@disabledTitle, target) and target.tagName isnt 'A'
168 $.stopEvent(event)169 $.stopEvent(event)
169 @toggleDisabled()170 @toggleDisabled()
170 else if slug = event.target.getAttribute('data-enable')171 else if slug = target.getAttribute('data-enable')
171 $.stopEvent(event)172 $.stopEvent(event)
172 doc = app.disabledDocs.findBy('slug', slug)173 doc = app.disabledDocs.findBy('slug', slug)
173 app.enableDoc(doc, @onEnabled, @onEnabled) if doc174 app.enableDoc(doc, @onEnabled, @onEnabled) if doc
assets/javascripts/views/sidebar/results.coffee+1−1
@@ -62,7 +62,7 @@ class app.views.Results extends app.View · 61 unmodified lines
62 62
63 onClick: (event) =>63 onClick: (event) =>
64 return if event.which isnt 164 return if event.which isnt 1
65 if slug = event.target.getAttribute('data-enable')65 if slug = $.eventTarget(event).getAttribute('data-enable')
66 $.stopEvent(event)66 $.stopEvent(event)
67 doc = app.disabledDocs.findBy('slug', slug)67 doc = app.disabledDocs.findBy('slug', slug)
68 app.enableDoc(doc, @onDocEnabled.bind(@, doc), $.noop) if doc68 app.enableDoc(doc, @onDocEnabled.bind(@, doc), $.noop) if doc
assets/javascripts/views/sidebar/sidebar.coffee+1−1
@@ -131,7 +131,7 @@ class app.views.Sidebar extends app.View · 130 unmodified lines
131 131
132 onClick: (event) =>132 onClick: (event) =>
133 return if event.which isnt 1133 return if event.which isnt 1
134 if event.target.hasAttribute? 'data-reset-list'134 if $.eventTarget(event).hasAttribute? 'data-reset-list'
135 $.stopEvent(event)135 $.stopEvent(event)
136 @onAltR()136 @onAltR()
137 return137 return