2010-09-03 4 views
2

Je voulais savoir comment intercepter un accès DOM par un JavaScript. Y a-t-il des outils ou des livres blancs disponibles à ce sujet? (Sinon je devrai en écrire un!)Intercepter l'accès à DOM par JavaScript

L'idée derrière l'interception est quelque chose à voir avec un module de sécurité pour les navigateurs web.

Merci.

+2

Il sera impossible de bloquer l'accès aux méthodes et aux propriétés du DOM d'une manière suffisamment bonne pour des raisons de sécurité. JavaScript est un langage très dynamique avec potentiellement de nombreuses façons de contourner les obstacles que vous pourriez mettre en place. – bobince

+0

Vous devrez creuser profondément dans le code du navigateur. Que voulez-vous dire par "* module *", avez-vous une extension d'api en tête? – Bergi

Répondre

1

Le meilleur que vous pouvez faire est d'utiliser DOM mutation events. Il existe divers événements tels que DOMNodeInserted, DOMNodeRemoved, DOMAttrModified etc (voir la spécification d'événements DOM, liée à ci-dessus). Il y a un événement fourre-tout général appelé DOMSubtreeModified qui est déclenché après une mutation DOM individuelle; cet événement se mouchant, vous pouvez donc définir un écouteur sur le document pour être informé de toutes les modifications apportées au DOM du document.

document.addEventListener("DOMSubtreeModified", function(evt) { 
    console.log("DOM mutation", evt); 
}, false); 

Ces événements sont pris en charge dans la plupart des navigateurs récents, à l'exception de IE (jusqu'à et y compris la version 8) et Opera, qui soutient certains evenbts mais notamment pas DOMSubtreeModified.

+0

Je ne pense pas (ou du moins ne peux pas imaginer) que l'OP veut écrire son module de sécurité dans JS. – Bergi

+0

@Bergi: D'accord. Je pense que j'ai mal interprété la question. –