Comments (8)
IE fires events outside of the window when the pointer is captured.
I believe most browsers process mouse events outside the window if you listen to events on the window element too.
from pep.
Actually, PointerEvents seem to work fine if you listen on the html
element. You can see this in action with:
http://the-grid.github.io/the-graph/the-graph-editor/
Just resize the window to not be fullscreen and start dragging the canvas slowly with mouse. It will still move when pointer is outside of the window, so we receive both pointermove
and pointerup
still. With touch in the same case you stop receiving events when finger leaves the window.
In this case the PointerEvents are listened on document.getElementsByTagName('html')[0]
. On body
the events stop coming when mouse leaves the window.
So I guess this is mostly a case of documentation, it looks like the polyfill works as it should.
(Note: this was tested on a Chromebook)
from pep.
On our the-behavior
custom element we exposed setting the PointerEvent source in the following way:
<the-behaviors listento="html">
<the-behavior type="drag" action="attribute" accept="tagName=BODY" mindistance="20"></the-behavior>
<the-behavior type="swipe" direction="north" action="remove" accept="tagName=DIV"></the-behavior>
</the-behaviors>
Without the listento
attribute we would add the event listeners to the parent element of the-behaviors
element, but you can also set it to html
to handle the mouse leaves window corner case. Works quite nicely.
from pep.
The only point of difference is when capturing events.
The polyfill definitely doesn't fire events when the mouse is outside the window and we are capturing the pointer events on an element within the body for example.
Internet explorer sends events to captured elements when the mouse leaves the window. So potentially the pollyfill should be attaching listeners to the html element when pointers are captured.
from pep.
@stakach By "capturing" do you mean Pointer Capturing: setPointerCapture
, or listening to events at the capture phase: addEventListener(event, eventHandler, true)
?
from pep.
Sorry, I should have been clearer. I meant Pointer Capturing with setPointerCapture
from pep.
@stakach @bergie I just did some preliminary testing on IE 10 & 11, and Chrome 31 and Canary with this test: https://gist.github.com/azakus/7650864
In all cases, I could receive pointermoves after capturing on pointerdown on the orange square.
from pep.
@azakus Agreed: https://dl.dropboxusercontent.com/u/30774132/angular-example/dragtest/test.html
from pep.
Related Issues (20)
- Apple Pencil and Finger Simultaneous Input is Blocked HOT 3
- pointerleave is not called after a click in macOS HOT 1
- Not same behaviours between desktop and mobile HOT 8
- Allow Config Option To Using Capture Phase HOT 8
- Make gotpointercapture and lostpointercapture bubble HOT 16
- Keep receiving events when element is removed
- Comment about "Support: Firefox <=44 only" seems to be wrong HOT 1
- Missing install / import instructions HOT 1
- Doesn't work in iOS safari web view (Cordova) HOT 2
- Broken travis-ci / local build process
- Maintenance plans HOT 4
- PointerEvent clientX and clientY are long instead of double in Safari IOS HOT 1
- Invalid ES5 Code HOT 3
- Promise execution order vs pointer event handling in Safari HOT 1
- PEP stands down in iOS13 though the PE implementation is incomplete. HOT 13
- Please publish a new version without const ! HOT 2
- Sometimes PEP attempts to create shadow root on unloaded document and fails HOT 1
- Element is not defined error
- [Questions] : 0.5.1 HOT 4
- Performance pointer events vs touch events HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pep.