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
170170 catch
171171 return
172172
173− link = event.target
173+ link = $.eventTarget(event)
174174 link = link.parentNode while link and link.tagName isnt 'A'
175175
176176 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
6060 event.stopImmediatePropagation()
6161 return
6262
63+$.eventTarget = (event) ->
64+ event.target.correspondingUseElement || event.target
65+
6366 #
6467 # Manipulation
6568 #
assets/javascripts/views/content/content.coffee+1−1
@@ -169,7 +169,7 @@ class app.views.Content extends app.View · 168 unmodified lines
169169 return
170170
171171 onClick: (event) =>
172− link = $.closestLink event.target, @el
172+ link = $.closestLink $.eventTarget(event), @el
173173 if link and @isExternalUrl link.getAttribute('href')
174174 $.stopEvent(event)
175175 $.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
140140 true
141141
142142 onClick: (event) =>
143− target = event.target
143+ target = $.eventTarget(event)
144144 if target.hasAttribute 'data-retry'
145145 $.stopEvent(event)
146146 @load()
assets/javascripts/views/content/offline_page.coffee+1−1
@@ -50,7 +50,7 @@ class app.views.OfflinePage extends app.View · 49 unmodified lines
5050 return
5151
5252 onClick: (event) =>
53− el = event.target
53+ el = $.eventTarget(event)
5454 if action = el.getAttribute('data-action')
5555 doc = @docByEl(el)
5656 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
3030 onRoute: ->
3131
3232 onClick: (event) =>
33− if event.target.hasAttribute 'data-hide-intro'
33+ if $.eventTarget(event).hasAttribute 'data-hide-intro'
3434 $.stopEvent(event)
3535 @hideIntro()
3636 return
assets/javascripts/views/layout/document.coffee+3−2
@@ -71,9 +71,10 @@ class app.views.Document extends app.View · 70 unmodified lines
7171 return
7272
7373 onClick: (event) ->
74− return unless event.target.hasAttribute('data-behavior')
74+ target = $.eventTarget(event)
75+ return unless target.hasAttribute('data-behavior')
7576 $.stopEvent(event)
76− switch event.target.getAttribute('data-behavior')
77+ switch target.getAttribute('data-behavior')
7778 when 'back' then history.back()
7879 when 'reload' then window.location.reload()
7980 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
1010 return
1111
1212 onClick: (event) ->
13− event.target.blur() if event.target.tagName is 'A'
13+ target = $.eventTarget(event)
14+ target.blur() if target.tagName is 'A'
1415 return
1516
1617 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
117117
118118 onClick: (event) =>
119119 return if event.which isnt 1 or event.metaKey or event.ctrlKey
120− if event.target.tagName is 'A'
121− @focus event.target, silent: true
120+ target = $.eventTarget(event)
121+ if target.tagName is 'A'
122+ @focus target, silent: true
122123 return
assets/javascripts/views/list/list_fold.coffee+1−1
@@ -54,7 +54,7 @@ class app.views.ListFold extends app.View · 53 unmodified lines
5454 onClick: (event) =>
5555 return if event.which isnt 1 or event.metaKey or event.ctrlKey
5656 return unless event.pageY # ignore fabricated clicks
57− el = event.target
57+ el = $.eventTarget(event)
5858 el = el.parentNode if el.parentNode.tagName.toUpperCase() is 'SVG'
5959
6060 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
3737
3838 onClick: (event) =>
3939 return if event.which isnt 1 or event.metaKey or event.ctrlKey
40− if event.target.tagName is 'A'
41− @select event.target
40+ target = $.eventTarget(event)
41+ if target.tagName is 'A'
42+ @select target
4243 return
assets/javascripts/views/list/paginated_list.coffee+3−2
@@ -83,7 +83,8 @@ class app.views.PaginatedList extends app.View · 82 unmodified lines
8383 return
8484
8585 onClick: (event) =>
86− if event.target.tagName is 'SPAN' # link
86+ target = $.eventTarget(event)
87+ if target.tagName is 'SPAN' # link
8788 $.stopEvent(event)
88− @paginate event.target
89+ @paginate target
8990 return
assets/javascripts/views/misc/notif.coffee+3−2
@@ -51,8 +51,9 @@ class app.views.Notif extends app.View · 50 unmodified lines
5151
5252 onClick: (event) =>
5353 return if event.which isnt 1
54− return if event.target.hasAttribute('data-behavior')
55− if event.target.tagName isnt 'A' or event.target.classList.contains('_notif-close')
54+ target = $.eventTarget(event)
55+ return if target.hasAttribute('data-behavior')
56+ if target.tagName isnt 'A' or target.classList.contains('_notif-close')
5657 $.stopEvent(event)
5758 @hide()
5859 return
assets/javascripts/views/sidebar/doc_list.coffee+3−2
@@ -164,10 +164,11 @@ class app.views.DocList extends app.View · 163 unmodified lines
164164 return
165165
166166 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'
168169 $.stopEvent(event)
169170 @toggleDisabled()
170− else if slug = event.target.getAttribute('data-enable')
171+ else if slug = target.getAttribute('data-enable')
171172 $.stopEvent(event)
172173 doc = app.disabledDocs.findBy('slug', slug)
173174 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
6262
6363 onClick: (event) =>
6464 return if event.which isnt 1
65− if slug = event.target.getAttribute('data-enable')
65+ if slug = $.eventTarget(event).getAttribute('data-enable')
6666 $.stopEvent(event)
6767 doc = app.disabledDocs.findBy('slug', slug)
6868 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
131131
132132 onClick: (event) =>
133133 return if event.which isnt 1
134− if event.target.hasAttribute? 'data-reset-list'
134+ if $.eventTarget(event).hasAttribute? 'data-reset-list'
135135 $.stopEvent(event)
136136 @onAltR()
137137 return