The applications we build with SmartClient are frequently hosted in embedded IE browsers in newsroom control systems. After updating from SmartClient v11 to SmartClient v12.0p_2018-06-14, our software stopped working: Buttons can be clicked, but their respective handlers are not called. Visual hover effects and button depress effects behave as normal. Keyboard events behave as normal.
The cause for this seems to be that SmartClient assumes pointer events (onpointerdown, onpointerup, onpointermove, onpointercancel) are provided if window.PointerEvent exists. This assumption does not hold universally and not for embedded IE browsers. Another check on window.navigator.msPointerEnabled is needed.
Working from the SmartClient debug code bundled inside SmartGWT, I made a change to the isc.Browser.pointerEnabled property in /sc/client/browser/Browser.js (lines 1348-1354)
The original code:
After adding a check on msPointerEnabled:
After this change, our applications are working normally.
We would very much appreciate it if this issue could be addressed in some way. :)
The cause for this seems to be that SmartClient assumes pointer events (onpointerdown, onpointerup, onpointermove, onpointercancel) are provided if window.PointerEvent exists. This assumption does not hold universally and not for embedded IE browsers. Another check on window.navigator.msPointerEnabled is needed.
Working from the SmartClient debug code bundled inside SmartGWT, I made a change to the isc.Browser.pointerEnabled property in /sc/client/browser/Browser.js (lines 1348-1354)
The original code:
Code:
//> @classAttr browser.pointerEnabled (boolean : varies : RW) // Does the browser support pointer events as a means of capturing both touch and mouse // interactions? This simplifies event handling for capable browsers. //< isc.Browser.pointerEnabled = window.PointerEvent != null && (isc.Browser.isIE || isc.Browser.isEdge) && !isc.Browser.isMobileIE;
Code:
//> @classAttr browser.pointerEnabled (boolean : varies : RW) // Does the browser support pointer events as a means of capturing both touch and mouse // interactions? This simplifies event handling for capable browsers. //< isc.Browser.pointerEnabled = (window.PointerEvent != null && window.navigator.msPointerEnabled !== false) && (isc.Browser.isIE || isc.Browser.isEdge) && !isc.Browser.isMobileIE;
We would very much appreciate it if this issue could be addressed in some way. :)
Comment