【问题标题】:Making DOM element inaccessible from searching使 DOM 元素无法通过搜索访问
【发布时间】:2016-10-14 08:38:45
【问题描述】:

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

【问题讨论】:

  • 你在页面上添加了什么可怕的东西,你不想让人们找到?
  • 如果可能的话,您可以做很多好事。例如,不可从用户脚本中删除添加。一般来说,我的脚本会受到用户修改的更多保护..

标签: javascript google-chrome dom


【解决方案1】:

我自己找到了解决方案,只需 <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
});

【讨论】:

    猜你喜欢
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 2019-11-08
    • 2012-03-09
    • 1970-01-01
    相关资源
    最近更新 更多