搜索

时间:2016-06-13 19:49:30

标签: javascript google-chrome dom

我想通过搜索树/数组来使DOM元素无法访问。

覆盖getElementById

的示例代码
var x = document.createElement("div");
x.id = "foo";
document.body.appendChild(x);
var doc = document.getElementById;
document.getElementById = function(a){
if(doc.call(document, a) === x) return null;
  return doc.call(document, a);
};

然后document.getElementById("foo")按预期返回null

我可以覆盖所有函数,但获取元素的可能性太多,例如document.body.childNodes[x]

是否可以覆盖原型或从树/数组中删除元素,其中搜索有效,但是没有来自DOM?

目标浏览器是google-chrome。

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案,只需要<shadov>元素完全符合我的需要。

var shadowEl = parentNode.createShadowRoot();

https://developer.mozilla.org/pl/docs/Web/HTML/Element/shadow

但是需要一些覆盖,例如:

Object.defineProperty(document.getElementById("foo"), 'shadowRoot', {
  get: function(){
    return null;
  },
  enumerable: false
});