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 sys… (meer info)
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);
});
}