Skip to content

Remove "svgevent" and "touchevent" from createEvent list? #227

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
zcorpan opened this issue Apr 18, 2016 · 5 comments
Closed

Remove "svgevent" and "touchevent" from createEvent list? #227

zcorpan opened this issue Apr 18, 2016 · 5 comments

Comments

@zcorpan
Copy link
Member

zcorpan commented Apr 18, 2016

333b03c added "touchevent" per Web compat research in https://www.w3.org/Bugs/Public/show_bug.cgi?id=25491#c7

#220 added "svgevent". Was it added because it was supported in Gecko and IE11? @ayg

According to the data in whatwg/html#1054 (comment) right now WebKit/Chromium/Gecko/Edge throw for TouchEvent and WebKit/Chromium/Edge throw for SVGEvent.

@ayg
Copy link
Contributor

ayg commented Apr 18, 2016

At least based on Gecko source code, TouchEvent seems to be behind a pref: http://hg.mozilla.org/mozilla-central/file/1f16d3da9280/dom/events/EventDispatcher.cpp#l923 Maybe other engines also?

There was a problem in my testing methodology, because I grepped the output of http://w3c-test.org/dom/nodes/Document-createEvent.html but it previously omitted the trailing "s" from some of the plurals. Chrome and Firefox support "SVGEvents", but only Firefox supports "SVGEvent". New list:

AnimationEvent
BeforeUnloadEvent
CloseEvent
CompositionEvent
DeviceMotionEvent
DeviceOrientationEvent
DragEvent
ErrorEvent
FocusEvent
HashChangeEvent
IDBVersionChangeEvent
MutationEvent
MutationEvents
PageTransitionEvent
PopStateEvent
ProgressEvent
StorageEvent
SVGEvents
SVGZoomEvent
SVGZoomEvents
TextEvent
TrackEvent
TransitionEvent
WebGLContextEvent
WheelEvent

Exact methodology:

  1. For each browser, copy-paste output of http://w3c-test.org/dom/nodes/Document-createEvent.html to a text file, grep for '^Fail.NOT_SUPP', s/^[^"]"//, s/".*//. This gives a list of all the events that are not per the current version of the file.

  2. cat chrome.txt firefox.txt ie.txt | sort | uniq -c | sort -nr | grep '^ *[23]' | sed 's/^ *[2-3] //' | sort

The only difference I see is SVGEvent -> SVGEvents.

ayg added a commit to ayg/dom that referenced this issue Apr 18, 2016
ayg added a commit to ayg/web-platform-tests that referenced this issue Apr 18, 2016
This was an error in the original commit, see whatwg/dom#227 and
whatwg/dom@208b33fe.
@zcorpan
Copy link
Member Author

zcorpan commented Apr 18, 2016

Thanks!

Yeah, it seems likely TouchEvent is conditional on whether touch is enabled. Confirmed with http://software.hixie.ch/utilities/js/live-dom-viewer/saved/4077 on Opera for Android and Android Chrome.

Maybe the spec should require conditionalness for "touchevent"... (I can submit a PR for this.)

@zcorpan
Copy link
Member Author

zcorpan commented Apr 18, 2016

Related w3c/touch-events#29

@RByers thoughts on this? If there's no initTouchEvent maybe all browsers should remove "touchevent" from createEvent also? Or is there some reason it's needed for createEvent?

@zcorpan
Copy link
Member Author

zcorpan commented Apr 18, 2016

I suppose a possibility is that sites try createEvent('TouchEvent') as a way to check whether touch events are supported.

annevk pushed a commit that referenced this issue Apr 18, 2016
annevk pushed a commit that referenced this issue Apr 18, 2016
@zcorpan
Copy link
Member Author

zcorpan commented Apr 18, 2016

Quick search in httparchive reveals such usage, e.g.:

http://www.15min.lt/

touch: (function(){
                try { 
                    document.createEvent('TouchEvent');
                    return true;
                } catch(e) { 
                    return false;
                }
            })()

http://www.cnbc.com/

var isMobile=(function(){var mobile=false,evt;try{evt=document.createEvent('TouchEvent');mobile=true;}catch(e){}
return mobile;}());

zcorpan added a commit that referenced this issue Apr 18, 2016
Browsers typically disable touch events on non-touch devices, and
there exists Web content that detects this difference using
createEvent.
zcorpan added a commit that referenced this issue Apr 18, 2016
@annevk annevk closed this as completed in cb7c16b Apr 19, 2016
tabatkins added a commit to tabatkins/dom that referenced this issue Apr 28, 2016
* Add more legacy event types for createEvent()

Approximately as requested at
https://bugzilla.mozilla.org/show_bug.cgi?id=1251198#c7. This is the
list of events supported in createEvent() by at least two of Firefox,
Chrome, and IE 11. The one exception is I omitted MutationEvent,
which all three support, because apparently spec-land has decided to
deny its existence in the hope that it will go away.

Bikeshed does not know about all of the added interface names,
hopefully that will sort itself out over time.

* Meta: improve pull request instructions for DOM

See whatwg/fetch#276 for context.

* Enable an event listener to be invoked just once

* Editorial: web compatibility typically remains relevant

Fixes whatwg#210.

* Shadow: define attachShadow() for custom elements

* Meta: make it easier to reference participate in a tree

PR: whatwg#216

* Define node document for new Text nodes

Fixes whatwg#224 and part of whatwg#212. Also fix part of whatwg#209 by stating these
algorithms can rethrow exceptions.

* Use a single concept for attribute changes

This setup is still a little sketchy I think, but not more so than the
insertion and removing steps.

* SVGEvent is only Gecko, Blink also has SVGEvents

As pointed out by zcorpan in whatwg#227.

* Set createDocument()'s content type based on namespace

Fixes whatwg#217.

PR: whatwg#218

* Make document.createEvent("touchevent") sometimes throw

Browsers typically disable touch events on non-touch devices, and there exists web content that detects this difference using document.createEvent().

Fixes whatwg#227.

* Shadow: define slotchange event

Shadow: define slotchange event

Fixes WICG/webcomponents#288.

This defines the slotchange event in response to remove/insert operations, changes to a slot’s name attribute, and changes to an element’s slot attribute.

This also introduces the assigned nodes concept for slots, and assigned slot concept for slotables.

Slotables now also have a name, rather than a “get name”.

The slotchange event dispatches just after mutation observers have their callbacks invoked. The slotchange event is not yet marked scoped as scoped events are not yet defined in the DOM Standard.

Note: although the original issue did not mention it, this also suppresses signaling when slots are removed from a tree. Not just when they are inserted.

* Editorial: update custom element cross-spec references

* Editorial: fix a few cross-linking missteps

* Editorial: make "is" and "prefix" optional in "create an element"

* Use "create an element" in createHTMLDocument

Takes care of part of whatwg#212.

* Editorial: align exception language with IDL

* Editorial: introduce more shadow-including terms for CSS

Fixes whatwg#225.

* Editorial: distributed -> flattened

* Meta: export more terms

Fixes whatwg#233.

* Editorial: add "shadow host" and "assigned" as terms

This makes a couple of non-null checks read better and enshrines a term
we had already been using.

* Editorial: flip non-null/otherwise conditions

PR: whatwg#234

* Shadow: <slot> is now defined in HTML

* Remove passive as event listener key

This changes makes passive no longer contribute to the uniqueness of
an event listener. It therefore also no longer needs to be supported
as part of removeEventListener().

Fixes WICG/EventListenerOptions#27.

PR: whatwg#236

* Meta: point out event's timeStamp is likely to change

See whatwg#23 for details.

* Add [CEReactions] annotations to mutating methods

Part of WICG/webcomponents#186, and furthering whatwg/html@27aa7bc.

Linking [CEREactions] will happen once speced/bikeshed#677 is fixed.

* Editorial: check stop propagation flag at start of invoke

* Editorial: deduplicate Veli Şenol

* Editorial: define defaults for EventListenerOptions

Although this is also done in prose, this nonetheless simplifies the
prose a bit and makes it clearer to those skimming the standard what is
going on (although skimming is not recommended).

Fixes whatwg#239.

* Meta: link to Japanese translation

See
triple-underscore/triple-underscore.github.io#1
for more details.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

3 participants
@zcorpan @ayg and others