More actions
No edit summary |
No edit summary |
||
Line 9: | Line 9: | ||
$(element).off('click').on('click', function(event) { | $(element).off('click').on('click', function(event) { | ||
event.stopPropagation(); | event.stopPropagation(); | ||
console.debug("intercepted click on", this); | |||
originalHandler.call(this, event); | originalHandler.call(this, event); | ||
}); | }); | ||
Line 14: | Line 15: | ||
// Use native JavaScript to add the fix class | // Use native JavaScript to add the fix class | ||
element.classList.add('FixCatTreeClick'); | element.classList.add('FixCatTreeClick'); | ||
console.debug("attached on", element); | |||
} | } | ||
} | } |
Revision as of 10:40, 30 October 2024
function attachModifiedClickHandler(element) {
const eventsData = $._data(element, 'events');
const handlers = eventsData && eventsData.click;
if (handlers && handlers.length > 0) {
const originalHandler = handlers[0].handler;
// Properly detach and reattach the click handler using jQuery
$(element).off('click').on('click', function(event) {
event.stopPropagation();
console.debug("intercepted click on", this);
originalHandler.call(this, event);
});
// Use native JavaScript to add the fix class
element.classList.add('FixCatTreeClick');
console.debug("attached on", element);
}
}
addOnloadHook(function() {
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
const target = mutation.target;
// Check if the element has the specified class and has not already been processed
if (
mutation.attributeName === 'class' &&
target.classList.contains('CategoryTreeToggleHandlerAttached') &&
!target.classList.contains('FixCatTreeClick')
) {
attachModifiedClickHandler(target);
}
});
});
// Observe changes to attributes, specifically the 'class' attribute, throughout the document
observer.observe(document.body, {
attributes: true,
attributeFilter: ['class'],
subtree: true
});
});