-
Notifications
You must be signed in to change notification settings - Fork 815
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Infinite Scroll: Prevent DOM Caching when Switching to/from Fullscreen #10101
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Summary: When scrolling, Infinite Scroll periodically looks to see what DOM elements are no longer in the viewport, caches them, and removes them from the DOM. On Android (and others?), switching to/from fullscreen triggers the `scroll` event, which, in turn, triggers this DOM manipulation. The switch to fullscreen mode also confuses Infinite Scroll's understanding of what is visible in the viewport. Playing a VideoPress video (or fullscreening a Vimeo or other video) on Android can therefore remove the video from the DOM, which obviously breaks everything :) This patch uses the [Fullscreen API](https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API) to determine if the browser has switched to or from fullscreen in between throttled scroll events. If it has, Infinite Scroll will not do any of its DOM manipulation. (Any manipulation required will get picked up if the viewer continues to scroll.) Reported: p1535429757000200-slack-CBG1CP4EN Test Plan: 1. On a test site, have enough posts for Infinite Scroll. 2. On a post sufficiently early (at least one Infinite Scroll "page" down), add a VideoPress video, e.g. `[wpvideo MnTIDupg]` 3. On Android, open the site, and scroll down until the VideoPress post is visible. 4. Click the video to begin play. Prior to this patch: see the video start to play, then immediately disappear. After this patch: see the video play. Also: * Make sure things look normal elsewhere, both mobile and desktop. Reviewers: blowery, zinigor Tags: #touches_jetpack_files Differential Revision: D17671-code This commit syncs r180311-wpcom.
That's a great PR description, thank you so much for your effort! Generated by 🚫 dangerJS |
jeherve
approved these changes
Sep 11, 2018
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I could only test on Android and on desktop, but it seems to work well there! 🚢
jeherve
added a commit
that referenced
this pull request
Sep 25, 2018
* Readme: add boilerplate for next release, 6.6 * Add 6.5 to the changelog.txt file * Set boilerplate testing list for 6.6 * Readme: update stable tag to 6.5 * Add bullets to 6.5 changelog items * Readme: add link to previous changelogs This will help folks who want to know more about past releases, while keeping the readme.txt short so as to not overwhelm translators and site owners only looking for information about the last release. * Changelog: add information at the top of the changelog file. * Changelog: add #10054 * Changelog: add #10078 * Changelog: add #10079 * Changelog: add #10064 * Changelog: add #10094 * Changelog: add #10096 * Testing list: add more information based on #10087 * Changelog: add #9847 * Changelog: add #10084 * Changelog: add #9918 * Changelog: add #7614 * Changelog: add #10116 * Changelog: add #10108 * Changelog: add #10041 * Changelog: add #10121 * Changelog: add #10134 * Changelog: add #10130 * Changelog: add #10109 * changelog: add #10137 * changelog: add #9952 * changelog: add #10120 * changelog: add #10162 * Changelog: add #10163 * Changelog: add #10092 * changelog: add #10156 * Changelog: add #10154 * changelog: add #10122 * Changelog: add #10101 * changelog: add #10105 * changelog: add #10190 * Changelog: add #10196 * changelog: add #10152 * Changelog: add #10153 * Testing list: add more details to Site Verification testing steps. @see #10143 (comment) * changelog: add #10194 * Changelog: add #10193
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
[Feature] Infinite Scroll
[Feature] VideoPress
A feature to help you upload and insert videos on your site.
Touches WP.com Files
[Type] Bug
When a feature is broken and / or not performing as intended
[Type] Dotcom Merge
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes proposed in this Pull Request:
When scrolling, Infinite Scroll periodically looks to see what DOM
elements are no longer in the viewport, caches them, and removes them from
the DOM.
On Android (and others?), switching to/from fullscreen triggers the
scroll
event, which, in turn, triggers this DOM manipulation. The switchto fullscreen mode also confuses Infinite Scroll's understanding of what
is visible in the viewport.
Playing a VideoPress video (or fullscreening a Vimeo or other video) on
Android can therefore remove the video from the DOM, which obviously
breaks everything :)
This patch uses the Fullscreen API
to determine if the browser has switched to or from fullscreen in between
throttled scroll events. If it has, Infinite Scroll will not do any of its
DOM manipulation. (Any manipulation required will get picked up if the
viewer continues to scroll.)
Reported: p1535429757000200-slack-CBG1CP4EN
Differential Revision: D17671-code
This commit syncs r180311-wpcom.
Testing instructions:
Test Plan:
down), add a VideoPress video, e.g.
[wpvideo MnTIDupg]
visible.
Prior to this patch: see the video start to play, then immediately
disappear.
After this patch: see the video play.
Also:
Proposed changelog entry for your changes:
Fix video playback of VideoPress videos loaded via Infinite Scroll.