TouchEvent objects shouldn't contain co-ordinates, co-ordinates should only reside on the associated Touch objects.
To reproduce, visit jsbin.com/jalomi/quiet, and touch the screen.
Nothing should be written to the screen, but the x co-ordinate of the first pointer is written to the screen.
This behavior isn't spec compliant, and may cause compatibility issues. It also encourages sharing code for touch and mouse events, which seems to be something that isn't desired by Apple engineers.
"The premise of the specification is that using mouse event and touch events
interchangeably is needed. In reality, nobody was really asking for that
because it is a terrible idea."
I assume this is because pageX, pageY, layerX, layerY are on UIEvent.idl in WebKit (https://github.com/WebKit/webkit/blob/66e68cd8d7bf4ea1cf52f31ed9cb242f83ea5b57/Source/WebCore/dom/UIEvent.idl).
Chromium has never (AFAIK) reported non-zero values for TouchEvent.pageX/pageY/layerX/layerY, and we removed those properties from TouchEvent completely about a year ago (https://bugs.chromium.org/p/chromium/issues/detail?id=50327).
We're not aware of a single website which is depending on seeing these properties on TouchEvents, so it's likely highly web compatible to move them from UIEvent to MouseEvent as we did in blink.
See https://bugs.webkit.org/show_bug.cgi?id=147740#c11 for discussion of the interaction between these non-standard properties and the standard constructor syntax.