I'm looking at doing a project that would target Internet Explorer 10 using a touch screen. I don't currently have a touch screen handy, but need to know if Internet Explorer 10 does or will support DOM touch events.
Update: Touch Events are in development in Internet Explorer.
While IE10 will not support the touchstart and touchend type of events, it will support an arguably superior model consisting of Pointers. These generic pointers capture input from pens, mice, and fingers. A great primer was given in the post Touch Input for IE10 and Metro style Apps, dated Sept, 2011.
You should be able to get the older touch model to work well with the MSPointer model with just abit of feature-detection and clever-scripting:
var elm = document.getElementById("#foo"),
evt = window.navigator.msPointerEnabled ? "MSPointerDown" : "touchstart";
elm.addEventListener(evt, handler, false);
More on Pointer and Gesture events can be found here: http://msdn.microsoft.com/en-US/library/ie/hh673557.aspx
Important Developments
The W3C has formed a Working Group based on Microsoft's Pointer model.
Hand.js: a polyfill for supporting pointer events on every browser
It appears IE 10 doesn't support the 'touchstart' family of events used by iOS and other mobile browsers. IE 10 does however support multi-touch events using their own 'MSPointer' events. See http://msdn.microsoft.com/en-us/ie/hh272903#_DOMTouch for details and example sites like http://ie.microsoft.com/testdrive/Graphics/TouchEffects.
Related
How to get notified for mouse wheel interaction for MacCatalyst and windows at MAUI platform.
Answer 1: Scrolling.
What do you want to do based on mouse wheel interaction? If you simply want to scroll, or know when scrolling has occurred, then you can rely on ScrollView, and other views that handle scrolling themselves. E.g. ScrollView.Scrolled event.
Answer 2: General use of mouse scroll wheel.
Input functionality for mouse or keyboard has not yet been implemented in MAUI. Nor has a specification been finalized.
Here is one mouse proposal.
You could add a comment to that proposal requesting that mouse wheel support be included.
However, this might not be in the first release of MAUI, as the current emphasis is on stabilizing the functionality that is needed on all platforms (including mobile), some of which don't have mice.
In case anyone is wondering "shouldn't this be specified in .net 6?" (And then MAUI would simply use it.)
There are interactions between what is happening on the display (views or windows) and how mouse/keyboard input should be handled - it makes sense to put that input in the same code base that is displaying to the screen - therefore MAUI is a good place for it.
Especially given that touch is part of MAUI.
Until then, the solution is to make a DependencyService on each platform, to refer to the platform's APIs that you need.
Surprisingly, I'm not finding one that anyone has done for mouse on Windows and Mac.
Other than "implicitly", since a mouse can be used similar to a touch device. And text can be typed on a keyboard. The point is that there is no API specific to functionality that only makes sense if you have a physical mouse (scroll wheel) or a physical keyboard (global keyboard hooks).
TBD I'll look into this further.
Basic approach would be to look at what WinUI 3 uses as input APIs.
On Windows Desktop app, forward to those input APIs. Write an adapter on other platforms (Mac, Linux).
I'll see if Uno Platform or Avalonia have taken this approach.
Is it possible to implement a Windows Application or extension? to enable iPad like scrolling System wide for all apps ?
The OSX equivalent would be SmartScroll:
www.marcmoini.com/sx_en.html
Possible ?
I found your question in elance.com.
If you need those functions implemented in ALL Windows applications - the answer is NO. Some applications can be forced to scroll smoothly, but not all of them: applications can use custom objects to implement scroll bars. Actually, this task is possible for one (or few) selected apps, but you need to write some code and do testing for each application. For example: Logitech "Flow Scroll" software implements smooth scrolling in popular browsers, i have M325 mouse with this function. In other apps this software don't work.
I use ScrollMagic to trigger animations on each section of a web page. This works great for desktop and for some browsers on mobile.
However there are some mobile browsers (older versions of Safari and Chrome (on ipad)) that don't play these animations until the scrolling event is finished. I know there are ways around that. However instead, I would like to simply turn off these animations when not supported.
Is there a way to detect that with Modernizr? Or would I have to target specific browsers and its versions?
You wouldn't detect parallax animation. That isn't a browser feature, that is something that you can use browser features to accomplish.
In this case you would you be looking to detect if you are reflow the page during a scroll, or if it waits until after the scroll event fires. There is currently no detect for this, and creating one would get pretty greasy.
I believe what you are seeing is the result of the scroll event not firing as you scroll on certain browsers. I cannot think of a way to simulate this with javascript (triggering a scroll event will obviously only trigger one scroll event, so there isn't anything to gain there). As a result, I am not confident that you would ever be able to accurately detect this.
I completely agree with Patrick's answer, but would like to add that it is indeed possible to have immediate scroll events on the mobile versions of chrome and safari, you are talking about.
The issue you're describing is related to all iOS devices before version 8.
Before then the mobile browser engine did not trigger "true" scroll events while scrolling, but only once scrolling had come to a full halt (so after the inertia stopped). Even the execution of javascript was suspended, so you couldn't just run a loop to check the scroll position.
Long story short: There are ways around it using containers for scrolling and requestAnimationFrame.
The easiest way I found to get scroll events for pre iOS8 devices is iScroll.
I would recommend to check out this: http://janpaepke.github.io/ScrollMagic/examples/advanced/mobile_basic.html
and this:
http://janpaepke.github.io/ScrollMagic/examples/expert/mobile_advanced.html
So getting back to your original question: How to detect when you would even need those workarounds.
You'd need to check if the you're on iOS version 7 or lower, which, to my knowledge, can't be done with modernizr, as it is a feature detection library.
So check out this thread to learn more: Detect iOS version less than 5 with JavaScript
I have just bought a Wacom Bamboo touch tablet. It works fine with all applications except the Twitter client, which gets a bit confused when I click on a link.
Is there a quick bit of code I can knock up / API I can call to see what kind of mouse events are being generated by the driver (just to satisfy my curiosity)?
To clarify: I'm not writing an app here... just trying to use a product and work out why it's not working properly.
Tablet events are somewhat different than mouse events. Specifically:
A [tablet] pointer event is an NSEvent object of type NSTabletPoint or
an object representing a mouse-down, mouse-dragged, or mouse-up event
with a subtype of NSTabletPointEventSubtype.
i have developed my own map control (similar Bing Maps control), but when i move this map to right or left, Panorama changes view, but when i move the same bing map, view doesn't change. How i can do the behaviour of my control similarly as in Bing maps
The issue is that your control is trying to handle gestures and so is the Panorama. This was a big issue for a lot of people in the early version of the tools. The standard response was always to avoid this situation as it has implications for usability. Unfortunately there are some situations where you really need this.
The NoDo update (March 2011) included a "fix" to work around this issue for the built in controls. That doesn't help you though.
Fortunately there is a work around.
When contact is made with your control you disable the "IsHitTestVisible" property on the container so that it doesn't also receive the gestures you are capturing. Be sure to set it abck afterwards though.
See http://mine.tuxfamily.org/?p=111 for more details.