Alright, so this is a little tricky to title, so I'm just going to leave it at that and explain the situation.
We developed our own grid layout that we use as the Course Homepage and links to each module on the Modules page accordingly. This was all well and good until this last update. Now, while the links still work and are valid, the positioning is messed up. Testing in Google Chrome, Mozilla Firefox, Microsoft Internet Explorer, and Apple Safari all produced this result, so we proceeded with the determination that the issue is not browser-specific.
Here's a screen capture of one of the tests without our custom configurations in Google Chrome 52: http://www.screencast.com/t/TIxX15szsoy
Here's what we found happens, step-by-step:
- User clicks on a grid block from homepage (/courses/109/modules/770)
- Canvas identifies the module and redirect the user to the Modules page with a named location appended to the URL (/courses/109/modules#module_770)
- Browser renders the Modules page with the structure for Due Dates and Point Values included for every item (even content pages and external URLs, which can't have them)
- Browser scrolls to the correct module
- Canvas scripts finish executing, updating the "placeholders" with the corresponding information or removing them if no information is to be added for each item
- Browser re-renders the Modules page with the revised structure
That last bit results in a display that is shorter than was originally rendered due to the removal of "placeholders". The browser doesn't have any way to know to adjust, so the scroll stays positioned where it was, even though its content gets moved further up.
This leaves only using a timing function (setInterval or setTimeout) to re-execute the scroll at an arbitrary point of time. Not ideal due to varying load times and user response times. If may do as it's supposed to without impacting the user experience, or the user may start to scroll and the script jumps them back to where it was supposed to initially go, or the Canvas script takes too long to finish and the timed scroll becomes pointless.
Has anyone else encountered something similar to this? If so, do you have any suggestions on how we can address this in a more ideal manner than a timed event?