[BUG] cant run element.requestFullscreen() without user interaction #224
Labels
No labels
area/accessibility
area/dependency
Confirmed
Crash Report
Delayed
Design Issue
Duplicate
Feedback required
Good first issue
kind/bug
kind/cleanup
kind/enhancement
platform/linux
platform/macos
platform/windows
priority/high
Question
Request for Comments
Seeking Other Contributors
Seeking Testers
Won't Fix / By Design
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
gh-obsproject/obs-browser#224
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Platform
Operating system and version:
Ubuntu 18.04.4 LTS
(also reproduced on windows 10)
OBS Studio version:
installed using ubuntu store snap version 25.0.7 rev 1063
Expected Behavior
A page that runs videoelement.requestFullscreen() should have that element go fullscreen
Current Behavior
The action is blocked with the message:
'requestFullscreen' on 'Element': API can only be initiated by a user gesture.Steps to Reproduce
https://jsfiddle.net/saty9/xpntf1qc/3/
Should have enough to reproduce a page with the same issue. I believe it cant be hosted from a local file for testing as that may bypass the restriction (I haven't checked this)
Additional information
The video is displaying data from a webrtc stream in my usecase
I suspect they are trying to fullscreen a video player, perhaps.
After testing this myself, the behaviour is correct in terms of behaving like a web browser - that is, the fullscreen API fails if you have not yet interacted with the site, but succeeds if you have. I've confirmed Microsoft Edge 91 does the same thing as obs-browser.
I can however see a use case for potentially sending a dummy interaction on load to make the page think a user has interacted with it, to allow for APIs such as this to succeed without actual user interaction (via the Interact dialog). The downside of doing this is there are certain APIs that shouldn't be run without actual user interaction.