Ich entschuldige mich, wenn dies zuvor beantwortet wurde, konnte ich es nicht mit der Suche finden.JavaScript/jQuery: Wie löst man ein Ereignis aus, wenn "display: none" entfernt wird?
Ich muss 4 Elemente kennzeichnen, um ein Ereignis auszulösen, wenn sie eingeblendet werden ("display: none" wird entfernt). Ich denke, dass ein mutationObserver der richtige Weg ist, aber ich habe Probleme, genau auf das Ereignis zu filtern, das ich brauche.
Hat jemand Erfahrung damit?
Bearbeiten: Leider haben wir keinen Zugriff auf das Skript tatsächlich die Elemente zu verstecken. Sie sind Eigentum und werden von einem anderen Team geschützt. Das einzige was wir eingeben können ist, wenn das Element eingeblendet wird.
Ich habe versucht, herauszufinden, wie das für meine Bedürfnisse zu bearbeiten.
// Blocker is the element that has a changing display value
var blocker = document.querySelector('#blocker');
// Trigger changes the display value of blocker
var trigger = document.querySelector('#trigger');
// Our mutation observer, which we attach to blocker later
var observer = new MutationObserver(function(mutations){
mutations.forEach(function(mutation){
// Was it the style attribute that changed? (Maybe a classname or other attribute change could do this too? You might want to remove the attribute condition) Is display set to 'none'?
if(mutation.attributeName === 'style' && window.getComputedStyle(blocker).getPropertyValue('display') !== 'none'
){
alert('#blocker\'s style just changed, and its display value is no longer \'none\'');
}
});
});
// Attach the mutation observer to blocker, and only when attribute values change
observer.observe(blocker, { attributes: true });
// Make trigger change the style attribute of blocker
trigger.addEventListener('click', function(){
blocker.removeAttribute('style');
}, false);
Feuern Sie ein benutzerdefiniertes Ereignis in welchem Skript/Verhalten löst die Entfernung von 'display: none'? –
Leider haben wir keinen Zugriff auf dieses Skript. Drittanbieter-Tagging-Unternehmen. –