Normally we use a data uri to give the canvas a custom cursor. However, this isn't supported in any version of Internet Explorer or Microsoft Edge. This results in a forced server side cursor (see bug 5148). We should investigate other ways of providing a local cursor in the HTML5 client for IE and Edge.
http://caniuse.com/#feat=datauri
We currently use the style cursor property, which supports a URI value in all browsers except for Edge, according to this: http://caniuse.com/#search=cursor The problem is that the cursor sent from the server is stored in a Data URI, which isn't supported. Could we perhaps try to, from the server, present the url of the cursor?
Upstream bug: https://github.com/kanaka/noVNC/issues/572
From upstream: > Here is another couple of relevant links: > > https://msdn.microsoft.com/en-us/library/aa358795(v=vs.85).asp > http://stackoverflow.com/questions/2636068/hide-cursor-in-chrome-and-ie > > Unfortunately, it doesn't seem that IE/Edge are going to support either data > URIs or the "none" option to hide the cursor. One option we could explore is > the PointerLock API which would allow us to hide the cursor and then render our > own directly in the canvas. However the downside is that the captures the > pointer inside the canvas and it requires user permission. > > Probably the best option that would work everywhere (all browsers and older > versions too) would be to change the cursor to a blank cursor file and then > directly render the mouse in the canvas. It's not as nice as just having the > browser to the work of rendering the cursor for us, but it's the best option I > can think of for supporting this widely if we think it's important.
This also applies to touch devices.
Now fixed upstream in noVNC.
Tested on: * Windows 10 - IE, Edge, Firefox and Chrome * macOS - Safari, Firefox and Chrome Does work fine on everything but windows with touch. For this it works fine on Chrome but not on Firefox, IE 11 or Edge 18. The local cursor on IE and Edge works fine using mouse/track-pad but not with touch. The cursor is only visible during a touch event and disappears as soon as the finger is lifted. On Firefox the local cursor disappears as soon as touch is used. This could be bug 7395. I also tested on TL 4.10.1 and the local cursor is not used on IE or Edge but the cursor is always visible. Might be related to upstream issue: https://github.com/novnc/noVNC/issues/1300 Even though the problem upstream is only on Edge and Chrome.
(In reply to comment #9) > > On Firefox the local cursor disappears as soon as touch is used. This could be > bug 7395. > Further testing in Firefox version 66 on Lamina (Windows 10) and touch with local cursor works.
Apparently this change breaks Firefox in touch emulation mode. Simply log in and click anywhere which touch emulation active and you get: > TypeError: event.changedTouches[0] is undefined[Learn More] cursor.js:163:9 > _handleTouchMove https://10.47.254.219:300/core/util/cursor.js:163 > _handleTouchStart https://10.47.254.219:300/core/util/cursor.js:157 > _handleTouchStart self-hosted:975 > sendTouchEvent resource://devtools/server/actors/emulation/touch-simulator.js:274 > handleEvent resource://devtools/server/actors/emulation/touch-simulator.js:211
Definitely a bug in Firefox. I've added a report here: https://bugzilla.mozilla.org/show_bug.cgi?id=1588438 I don't think it's worth trying to work around this right now. We'll just have to live without that tool for now.
(In reply to comment #9) > Does work fine on everything but windows with touch. For this, it works fine on > Chrome but not on Firefox, IE 11 or Edge 18. Actually we have problems in Chrome as well when using a touch device. After a mouse click, the cursor disappears until the mouse is moved. > The local cursor on IE and Edge works fine using mouse/track-pad but not with > touch. The cursor is only visible during a touch event and disappears as soon > as the finger is lifted. Due to the many layers of this problem, we missed that the disappearing-after-touch issue did not happen on Edge, only on IE with touch. So to summarize, we have seen two problems after the new noVNC vendordrop: * When using touch devices and Windows 10 the cursor disappears in IE after lifting the finger. * The cursor also disappears after a click in Edge always and in Chrome when using touch.
The new noVNC vendordrop fixes the two problems with disappearing cursors. We have verified this on the following platforms: Windows 10 with touch screen (*): --------------------------------- ✓ IE 11 (**) ✓ Edge 18 ✓ Firefox 66 (***) ✓ Chrome 77 Windows 10 without touch: ------------------------- ✓ IE 11 (**) ✓ Edge 18 ✓ Firefox 69 ✓ Chrome 77 iOS 13: ------- ✓ Safari 13 Android 9: ---------- ✓ Firefox 69 ✓ Chrome 77 Fedora 30 without touch: ------------------------ ✓ Firefox 69 ✓ Chrome 77 macOS 10.14 with touch: ----------------------- ✓ Safari 14 ✓ Firefox 69 ✓ Chrome 77 macOS 10.14 without touch: -------------------------- ✓ Safari 14 ✓ Firefox 69 ✓ Chrome 77 (*) Note bug 7402 (**) Note bug 7403 and bug 7404 (***) Note bug 7395
(In reply to comment #15) Re-tested on Nightly build, following same test sheet as earlier. Works fine!
Seems to work well. I tested capture handling in the session and the control bar handle, as well as the appearance of the mouse cursor in: * Firefox on Fedora and Android * Chrome on Fedora * Internet Explorer on Windows 2008 R2 Release notes look good.