c'è almeno un modo, ma non è molto buona. Si può solo interrogare l'elemento di cambiamenti come questo:
var previous_style,
poll = window.setInterval(function()
{
var current_style = document.getElementById('target').style.display;
if (previous_style != current_style) {
alert('style changed');
window.clearInterval(poll);
} else {
previous_style = current_style;
}
}, 100);
Lo standard DOM specifica anche mutation events, ma non ho mai avuto la possibilità di utilizzarli, e non sono sicuro di come stanno supportati. Tu li usereste in questo modo:
target.addEventListener('DOMAttrModified', function()
{
if (e.attrName == 'style') {
alert('style changed');
}
}, false);
Questo codice è la parte superiore della mia testa, quindi non sono sicuro se avesse funzionato.
Il migliore e la soluzione più semplice sarebbe quella di avere una richiamata nella funzione di visualizzazione del target.
Questa risposta è utile? http://stackoverflow.com/questions/1397251/event-detect-when-css-property-changed-using-jquery#answer-1397500 – kangax
@kangax, grazie. Ma dal momento che non è ampiamente implementato penso che avrò intenzione di scalfire l'intera idea dell'ascoltatore dell'evento e di seguire una strada diversa. –
Vedere questa risposta per l'implementazione di un evento "onVisible" in JavaScript: http://stackoverflow.com/a/3807340/975097 –