Rules Hub
Code Ruleset
Rule priority, scope & exceptions
Use this to align rules with the senior-level structure (P0/P1/P2, scope, exceptions/tradeoffs).
Use `event.preventDefault()` for beforeunload; avoid deprecated `returnValue`
Use preventDefault for beforeunload warnings and preserve required legacy support; custom prompt text is browser-controlled.
Bad example
| 1 | window.addEventListener("beforeunload", () => "Save your changes first"); |
Explanation (EN)
A custom string cannot control the browser's confirmation text; compatibility behavior must still be checked.
Objašnjenje (HR)
Prilagođeni string ne određuje tekst potvrde preglednika. Potrebno ponašanje radi kompatibilnosti ipak treba provjeriti.
Good example
| 1 | const warnBeforeUnload = (event: BeforeUnloadEvent) => { |
| 2 | event.preventDefault(); |
| 3 | event.returnValue = "unsaved"; // legacy browser support |
| 4 | }; |
| 5 | // Register only while dirty; remove the same listener after save or teardown. |
Explanation (EN)
The handler requests a browser warning; the nonempty legacy value is not a custom message. Remove it only after verifying the supported browser baseline.
Objašnjenje (HR)
Handler traži upozorenje preglednika; neprazna legacy vrijednost nije prilagođeni tekst poruke. Ukloni je tek nakon provjere podržanih preglednika.
Notes (EN)
Register an unload warning only while unsaved changes exist. Use preventDefault and retain a tested legacy returnValue assignment when the browser baseline requires it.
Exceptions / Tradeoffs (EN)
The browser controls the displayed message and requires user activation. beforeunload is unreliable on mobile and cannot be the sole persistence mechanism; returning a value works differently for onbeforeunload and addEventListener.
Iznimke / Tradeoffi (HR)
Preglednik određuje tekst poruke i zahtijeva prethodnu korisničku interakciju. beforeunload nije pouzdan na mobitelu i ne smije biti jedini način spremanja. Povratna vrijednost handlera različito se tumači za onbeforeunload i addEventListener.