-
Notifications
You must be signed in to change notification settings - Fork 0
Description
The projection window of Congregation displays third-party websites in an iframe which can fail to load due to settings on the third-party website such as X-Frame-Options and frame-ancestors. This issue tracks attempts to overcome this restriction.
Loading websites directly as the presentation window
Load the URL directly with the presentation API using PresentationRequest( Url )
Dev sub-directory have been updated with this feature to facilitate testing
URL https://www.google.com/search?q=amazing+grace results in presentation window closing immediately
URL https://genius.com/Chris-tomlin-amazing-grace-my-chains-are-gone-lyrics loads successfully
Browser extensions
Browser extensions such as header overrides do not seem to run on the presentation window despite working normally on standard browser windows
Further testing also shows that ad blockers do not work with Congregation either. This could be somewhat detrimental to the user experience and could be considered a separate issue
Tested on Google Chrome 137.0.7151.41 on Windows 10 64bit
Extensions tested include Ignore X-Frame headers, CORS Unblock and uBlock Origin Lite
From commit 1a4ddd7 onwards, browser extensions should now work with Congregation. Testing shows that extensions are successful in circumventing iframe restrictions.
Proxy services
I have yet to come across a publicly available proxy that can remove iframe related headers. It is possible to build this into Congregation on the server side but that would require migrating away from GitHub hosting.
Presentation API alternatives
It is possible to replace the Presentation API with an alternative which can be used in conjunction with some of the previous methods listed here.
Element requestFullscreen() moves the current browser window to the presentation screen which prevents display of the presentation controls. It can be used in a new browser window but a separate user interaction on the new window is required.
Window.open() can be given coordinates from getScreenDetails() to open a new window directly on the presentation screen. However, this window is not fullscreen and browser UI elements are visible.