是否有用于删除对Element.querySelector和其他dom访问方法的访问的解决方案?

时间:2018-10-22 16:00:09

标签: javascript dom

我正在寻找解决方案,以防止访问未定义JavaScript代码的父元素之外的dom。

是否有任何解决方案可以挂钩所有dom访问方法,例如我们可以挂钩控制台方法还是根据范围更改文档根元素。

作为var document = element应该很容易,并且可以防止访问全局变量,但是文档是不可变的。

有解决方案吗?

1 个答案:

答案 0 :(得分:0)

一种方法是使用全局常量。

const DOM = document.getElementById('main');
...
DOM.getElementsByTagName('div');

您还可以覆盖文档对象上的所有方法(getElementById,getElementsByTagName)。在这种情况下,请务必调用super:

class myDocument extends Document{
    getDocumentById(value) {
      console.log(`Searching for ${value} inside 'main'. `)
      // If you want to remove access to theese functions simply comment out following line
      super.getDocumentById('main').getDocumentById(value)}    
}

var array = new newArray

array.push('new Value')

将“ main”替换为组件ID的位置。