2010-09-03 93 views
2

我想知道如何拦截JavaScript访问DOM。有没有可用的工具或白皮书? (否则我需要编写一个!)拦截JavaScript访问DOM

拦截背后的想法是与Web浏览器的安全模块有关。

谢谢。

+2

以任何足够安全的方式阻止对DOM方法和属性的访问是不可能的。 JavaScript是一种高度动态的语言,可能有许多方法可以解决您可能会遇到的任何障碍。 – bobince 2010-09-03 09:45:31

+0

您需要深入挖掘浏览器代码。 “* module *”意味着什么,你有任何扩展API吗? – Bergi 2012-08-02 23:47:42

回答

1

您可以做的最好的方法就是使用DOM mutation events。有各种事件,如DOMNodeInserted,DOMNodeRemoved,DOMAttrModified等(请参阅上面链接的DOM事件规范)。有一个叫做DOMSubtreeModified的通用全面事件,在任何单个DOM突变之后被解雇;此事件起泡,因此您可以在文档上设置侦听器,以通知文档DOM的所有更改。

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

这些事件在最近的浏览器都支持,用IE除外(直至并包括第8版)和Opera,支持一些evenbts但值得注意的是不DOMSubtreeModified

+0

我不认为(或者至少不能想象)OP想要在JS中编写他的安全模块。 – Bergi 2012-08-02 23:48:44

+0

@Bergi:同意。我想我误解了这个问题。 – 2012-08-02 23:59:04