est-il une alternative à DOMAttrModified qui va travailler dans webkit
J'ai besoin de tirer parti de ce DOM événement. IE a onpropertychange, à ce que j'en ai besoin pour le faire aussi. Webkit ne semble pas soutenir cet événement, cependant. Est-il une autre solution que je pourrais utiliser?
- J'ai été en mesure de venir avec quelque chose de basé sur ce http://www.west-wind.com/Weblog/posts/453942.aspx
- Basé sur le la solution par David Walsh j'ai créé une petite bibliothèque pour attraper DOM insertions. Si vous pouvez écrire un sélecteur CSS qui correspond à l'élément après le changement vous êtes intéressé - c'est une solution valable. Il couvre de plus en plus de navigateurs que DOM Mutation des Observateurs. Voir: github.com/naugtur/insertionQuery
Vous devez vous connecter pour publier un commentaire.
Bien que Chrome ne permet pas de distribuer
DOMAttrModified
événements, les plus lightweighted mutation observateurs sont pris en charge depuis 2011, et ces travaux pour des modifications d'attributs, trop.Voici un exemple pour le corps du document:
Pour une simple modification de l'attribut, le
console.log
déclaration d'impression:Console:
> color red black
DOMAttrModified
déclenche immédiatement lorsque l'attribut change, mais la mutation des observateurs de la file d'attente d'un événement. Donc, il y a une différence subtile entre les deux.Webkit
préfixe n'est plus nécessaire. caniuse.com/#search=MutationObserverSi vous êtes heureux avec seulement la détection des appels à
setAttribute()
(par opposition à la surveillance de toutes les modifications d'attributs) puis vous pouvez contourner cette méthode sur tous les éléments avec:J'ai eu la même question, et a été la pensée de la modification de
setAttribute
, voir les ce que Sean n', j'ai copié qui. A très bien fonctionné, sauf que c'était de tir lorsqu'un attribut a été à plusieurs reprises la même valeur, alors j'ai ajouté une case à ma copie de sauter le tir de l'événement, si la valeur n'est pas modifiée. J'ai également ajoutéval = String(val)
, basé sur le raisonnement quesetAttribute
forcera les numéros de chaînes, de sorte que la comparaison devrait prévoir que.Ma version modifiée est:
Veuillez consulter le code:
https://github.com/meetselva/attrchange/blob/master/attrchange.js
'DOMAttrModified' + ('propertychange' pour IE) sont utilisés comme dans votre cas. Si il n'est pas approprié pour vous, le "laid" solution qui puisse satisfaire cette demande devrait être setInterval(function(){}, retard)
Sinon voir Sean Hogan post ci-dessus.
De la solution fournie par @Filip est proche (et peut-être travaillé à l'époque), mais maintenant, vous devez demander la livraison de l'ancienne valeur de l'attribut.
Ainsi, vous aurez envie de changement :
à ceci:
Sinon, vous ne verrez pas le oldValues (vous obtiendrez la valeur null à la place.) Cela a été testé dans Chrome 34.0.1847.131 (compilation Officiel 265687) m.