Interactive loading screens: cursor, buttons and opening links
Add loadscreen_cursor 'yes' to the loading screen’s manifest to show the mouse. Normal HTML buttons then work. Links do not navigate the loading screen — open them in the player’s browser with window.invokeNative('openUrl', 'https://…'), which only accepts http and https URLs.
A long load is a captive audience. With the mouse enabled, a loading screen can let players read the rules in tabs, pause the music, browse staff or click through to your Discord — turning waiting time into onboarding. It takes one manifest line and a little JavaScript.
Enabling the cursor
fx_version 'cerulean'
game 'gta5'
loadscreen 'index.html'
loadscreen_cursor 'yes'
files { 'index.html', 'style.css', 'script.js' }Opening links in the player’s browser
function openExternal(url) {
if (window.invokeNative) {
window.invokeNative('openUrl', url); // opens the default browser
} else {
window.open(url, '_blank'); // when testing in a normal browser
}
}
document.querySelector('#discord').addEventListener('click', () => {
openExternal('https://discord.gg/yourinvite');
});invokeNative('openUrl') hands the URL to the operating system, which opens it in the default browser. FiveM only accepts addresses starting with http:// or https://.
Interactive elements worth adding
| Element | Why |
|---|---|
| Music play/pause and volume | The most requested control — see audio and volume controls |
| Rules tabs | New players actually read them while waiting — see rules and info |
| Discord / website / store buttons | Converts waiting time into community joins |
| Staff and team | Makes the server feel run by people — see staff and team |
| Keybind cheat sheet | Answers the questions players ask in the first five minutes |
Keeping it usable
- Large click targets — players are on a gaming mouse, often on a large screen.
- Nothing essential behind interaction: the screen must also work if nobody touches it.
- Remember choices (like muted music) with
localStorageso the next join respects them. - Do not trap focus or disable scrolling in text panels.
Common questions
How do I show the mouse on my FiveM loading screen?
Add loadscreen_cursor 'yes' to the loading screen resource’s fxmanifest.lua.
How do I open a Discord link from the loading screen?
Call window.invokeNative('openUrl', 'https://discord.gg/yourinvite') from a click handler. It opens the player’s default browser.
Why does clicking a link break my loading screen?
A normal link navigates the loading screen page itself. Use openUrl instead of an <a href>.
Can openUrl open any address?
Only addresses beginning with http:// or https://.
Want a loading screen you never have to debug?
Build it in the browser, export once, and edit it whenever — no HTML, no re-uploads.
Start free