Skip to content
This repository has been archived by the owner on Jan 13, 2022. It is now read-only.

Scroll not working on IE11 #15

Open
ettysekhon opened this issue Jan 30, 2015 · 25 comments
Open

Scroll not working on IE11 #15

ettysekhon opened this issue Jan 30, 2015 · 25 comments
Labels

Comments

@ettysekhon
Copy link

Scrolling does not work on IE11 with example http://facebook.github.io/fixed-data-table/example-object-data.html.

@pieterv
Copy link
Contributor

pieterv commented Feb 3, 2015

@ettysekhon Do you have any kinda of touch support on your laptop? I think this might be a configuration issue with the examples rather than a problem with the table itself. Thanks for the report, we will look into this!

@ettysekhon
Copy link
Author

@pieterv I will check, i've tried it on 2 machines with IE11 and it doesn't work on both, although both are laptops (without touch).

@luisrudge
Copy link

I don't have touch support and scrolling isn't working. It doesn't show the scroll bar either.

scroll

@Axbon
Copy link

Axbon commented Feb 17, 2015

Not sure this has todo with bad touchdetection, however we've had to change how we detect touchsupport in some of our apps. Some computers "think" that they are touchactivated, particulary in Windows 8 with IE11 (even Chrome on some machines).

This can be caused by a service called "Tablet Service" in windows. The strange thing is that it does not happen on all machines, it does however happen even if there is no touchscreen on the machine. I also believe some external USB peripherals can cause touchsupport to be activated. The browser then uses some API in Windows to detect this, and it will be a "false positive".

I just tried (I am on a Macbook pro) but I got the Modern.ie image for Windows 8 with IE11 and the scrolling does not appear to work there either in the datatable. I am refering to these images using Virtual Box: https://www.modern.ie/en-us/virtualization-tools#downloads

Checking for touch in IE11 does in fact give me correct values, since I have no touchsupport:

'ontouchstart' in Window === false
window.DocumentTouch === undefined
document instanceof DocumentTouch === 'DocumentTouch' is undefined

I guess we can rule out this being a "touch" issue then :)

@pieterv
Copy link
Contributor

pieterv commented Feb 17, 2015

Im pretty sure this is related to our touch checking code, our internal apps that use the table are working fine with IE11 but i am able to reproduce this issue on the example site. You can also see how no scroll bar is showing up which tells me table scrolling is explicitly being turned off as would happen if it thinks it should be using touch. Sorry this should be easily fixable but i haven't had the time to do it yet, i will get to it pretty soon :)

@luisrudge
Copy link

@pieterv you mean facebook is using another version? :D

@pieterv
Copy link
Contributor

pieterv commented Feb 18, 2015

@luisrudge No we are effectively using the version that is on github master along with react master :) But the places where it is used don't currently support touch so we don't have the added touch support wrapper that we have for the FixedDataTable site examples, thats why i'm pretty sure its not a problem in the core table as we would know about it if was :P

@luisrudge
Copy link

Ah, oh. Thanks for the clarification! Awesome that you guys are using the same version!

@box-turtle
Copy link

I'm trying the simplest possible example of fixed data table on Windows 7 with IE10 (I know, everyone's favorite.). Scrollbar shows up, but mouse wheel doesn't work. Clicking and dragging scroll doesn't work. Clicking in empty area of scroll bar does do page up/down.

If I run the debugger, the error "Invalid Calling Object" is thrown on line 61 of ReactWheelHandler.js.

this.$ReactWheelHandler_animationFrameID = requestAnimationFramePolyfill(this.$ReactWheelHandler_didWheel);

I think the issue has to do with the logic in requestAnimationFramePolyfill - some IE weirdness in binding requestAnimationFrame to the global object.

If I replace requestAnimationFramePolyfill with window.requestAnimationFrame then scrolling with the mousewheel works (albeit slowly).

I'll try to look into this a bit more tomorrow.

@box-turtle
Copy link

I think we are running into the same ie issue described here:

caolan/async#299

except in this case it is due to calling requestAnimationFrame as a property of "global".

var nativeRequestAnimationFrame =
  global.requestAnimationFrame       ||
  global.webkitRequestAnimationFrame ||
  global.mozRequestAnimationFrame    ||
  global.oRequestAnimationFrame      ||
  global.msRequestAnimationFrame;

module.exports = nativeRequestAnimationFrame;

I don't know where in the code the window objects are bound to "global" - I am guessing some webpack dark magic.

@box-turtle
Copy link

Pretty sure this is a horrible hack, but putting this here in case it helps someone smarter than me fix this.

Based on this bug report: caolan/async#299 and not having a really good understanding of how to intercept the binding of global.requestAnimationFrame, I added this code to nativeRequestAnimationFrame.js

if (requestAnimationFrame) {
  global.requestAnimationFrame = requestAnimationFrame.bind(null);
}

var nativeRequestAnimationFrame =
  global.requestAnimationFrame       ||
  global.webkitRequestAnimationFrame ||
  global.mozRequestAnimationFrame    ||
  global.oRequestAnimationFrame      ||
  global.msRequestAnimationFrame;

module.exports = nativeRequestAnimationFrame;

and this code to cancelAnimationFrame:

 if (cancelAnimationFrame) {
   global.cancelAnimationFrame = cancelAnimationFrame.bind(null);
 }


var cancelAnimationFrame =
  global.cancelAnimationFrame       ||
  global.webkitCancelAnimationFrame ||
  global.mozCancelAnimationFrame    ||
  global.oCancelAnimationFrame      ||
  global.msCancelAnimationFrame     ||
  global.clearTimeout;

module.exports = cancelAnimationFrame;

If you do this then mousewheel and dragging of scrollbar work in IE 10. However, performance is terrible.

The change does not seem to affect Firefox or Chrome, scrolling remains fast and smooth in those browsers after the change.

@box-turtle
Copy link

Tested the fix above on IE11, and it works there too. Also, scrolling is smooth and fast on IE11 (janky on IE10 but who cares).

@tim-field
Copy link

Can we get a bug label added to this? its kind of a major and has been broken for a while now.

@luisrudge
Copy link

Still doesn't work on MS EDGE

@ehzhang ehzhang added the bug label Jul 15, 2015
@ghost
Copy link

ghost commented Aug 4, 2015

Thank you for reporting this issue and appreciate your patience. We've notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.

@tim-field
Copy link

@pieterv Hi any update on this one? Still no scrolling in any IE with the example pages. https://facebook.github.io/fixed-data-table/example-object-data.html

@AuthorProxy
Copy link

Examples not work at all on IE11

@fru
Copy link

fru commented Feb 12, 2016

+1

@kertal
Copy link

kertal commented Feb 16, 2016

@pieterv "added touch support wrapper" how can one remove it? would love to use this table but without working ie11 :( ... although i'd love to tell the users : "DONT USE IE, GET A BROWSER!"

@davidmoshal
Copy link

Not working on IE 11, so cannot use this component.

@onethread
Copy link

@pieterv Just fyi, I think there seems to be 2 different errors at play here. The examples will throw an error on mouseover, but based on your comments that's do to some kind of touch wrapper. However, if I pull down the project and make a rudimentary example using just out of the box Table and Cell components, IE 11 won't throw on mouseover, but it will throw on mousescroll:

Line 89 of ReactWheelHandler.js "Invalid calling object".

However, the error won't manifest if the node environment is set to production.

@ichbinedgar
Copy link

Hi guys, it's still not working on IE11 or edge mode / Windows 7.
The scroll bar is not appearing. But on IE 9 compatibility mode works though.
The other features are working (filter, sort,...).

@mikechabot
Copy link

mikechabot commented Jul 17, 2017

+1 on this 2 year old issue

Breaks on fixed-data-table/internal/DOMMouseMoveTracker.js

      if (this._animationFrameID === null) {
        // The mouse may move faster then the animation frame does.
        // Use `requestAnimationFramePolyfill` to avoid over-updating.
        this._animationFrameID = requestAnimationFramePolyfill(this._didMouseMove);
      }

sepo-one pushed a commit to One-com/fixed-data-table that referenced this issue Sep 3, 2017
@nabeel95
Copy link

nabeel95 commented Dec 5, 2017

Do we have any solution of scrolling issue on ie?

@mikechabot
Copy link

mikechabot commented Dec 5, 2017

@nabeel95 The project has been officially deprecated, via #502. If you need a 1-to-1 on the current API, with IE support, try https://github.com/schrodinger/fixed-data-table-2. Using this in production with success.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests