
Airport Administration Systems all freeze after last update
Good morning, I have about 11 airports in the Netherlands using an administrative system. 30th of april firefox run an update (Firefox 138.0 (20250421163656)) and all systems using firefox now systematically freeze sometimes up to 20 seconds after DOM updates. Especially when they press multiple buttons with function updating entire tables
Which seem to be related to if the DOM is being updated and it is triggered while still updating, it just freezes instantly.
Tested on Firefox with about 30 rows in a table.
E.g.
/**
* Toggles the visibility of paid and incomplete rows in the register table. * When activated, it hides rows that are marked as paid or incomplete. * When deactivated, it shows all rows again. * * Also updates toggle button states, re-applies the register filter, * and maintains register focus state. * * @param {HTMLElement} element - The element that triggered the toggle (unused, retained for compatibility). */
function registerTogglePaymentList(element) {
const registerMainBody = document.getElementById("registerMainBody"); const thisToggleButton = document.getElementById("paymentListToggleButton"); const trafficToggleButton = document.getElementById("trafficListToggleButton"); const rows = registerMainBody.rows; const toggleState = thisToggleButton.getAttribute("data-toggle");
requestAnimationFrame(() => { if (toggleState === "on") { const rowCount = rows.length;
for (let i = 0; i < rowCount; i++) { const row = rows[i]; const isSaved = row.getAttribute("data-saved") !== "false"; const isPaid = row.getAttribute("data-paid") === "1"; const isComplete = row.getAttribute("data-complete") === "true";
row.style.display = "";
if (isSaved) { // Uncomment if necessary // registerCheckRow(row); if (isPaid || !isComplete) { row.style.display = "none"; } } }
thisToggleButton.setAttribute("data-toggle", "off"); trafficToggleButton.setAttribute("data-toggle", "on"); } else { App.setRegisterFocusPos();
const rowCount = rows.length; for (let i = 0; i < rowCount; i++) { rows[i].style.display = ""; }
thisToggleButton.setAttribute("data-toggle", "on"); trafficToggleButton.setAttribute("data-toggle", "on"); }
// Reapply filters and restore focus registerFilterSet(App.registerFilterDirection, App.registerFilter); App.getRegisterFocusElement(true); });
}
All Replies (4)
I send you the fix I made myself, I should send you the old function instead, which is the one freezing the browser (tab)
Defective code since last update. ``` /* REGISTER TOGGLE PAYMENT LIST
Toggle the payment list to only show the unpaid register rows */
function registerTogglePaymentList2(element) {
var registerMainBody = document.getElementById("registerMainBody"); var thisToggleButton = document.getElementById('paymentListToggleButton'); var trafficToggleButton = document.getElementById('trafficListToggleButton');
if (thisToggleButton.getAttribute("data-toggle") == "on") { for (var i = 0; i < registerMainBody.rows.length; i++) { var row = registerMainBody.rows[i]; registerMainBody.rows[i].style.display = ""; // Check row to catch page refresh per row if(row.getAttribute("data-saved") != "false") { registerCheckRow(row); } var thisType = row.getAttribute("type");
if(row.getAttribute("data-paid") == "1" && row.getAttribute("data-saved") != "false") { row.style.display = "none"; } else if(row.getAttribute("data-complete") != "true" && row.getAttribute("data-saved") != "false") { row.style.display = "none"; } else { App.getRegisterFocusElement(true); } } thisToggleButton.setAttribute("data-toggle", "off"); trafficToggleButton.setAttribute("data-toggle", "on"); } else { // Override pos for when user scrolled without selecting a new input App.setRegisterFocusPos(); for (var i = 0; i < registerMainBody.rows.length; i++) { registerMainBody.rows[i].style.display = ""; } thisToggleButton.setAttribute("data-toggle", "on"); trafficToggleButton.setAttribute("data-toggle", "on"); } // Resort the filter table registerFilterSet(App.registerFilterDirection, App.registerFilter); App.getRegisterFocusElement(true);
} ```
Hallo Christan, mooi dat je dit zelf op hebt kunnen lossen. Om de ontwikkelaars hiervan op de hoogte te stellen is het handig om dit te melden via Bugzilla: https://bugzilla.mozilla.org/home.
Excuus, maar na testen: beide codes bleven fouten geven sinds de laatste update. Alle vliegvelden werken nu op Chrome tot dit is opgelost.
Firefox 138.0 (20250421163656) bevriest dus als er een DOM update wordt getriggered van een element dat nog aan het updaten is.
Beste Christian, dit kan alleen maar opgelost worden door de ontwikkelaars, dus daarom nogmaals het vriendelijke verzoek om dit te melden via Bugzilla, dan kunnen zij met je uitgebreide gegevens er mee aan de slag. Alvast bedankt!