我想通过搜索树/数组来使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。
答案 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
});