如何使用Javascript删除DOM元素?

时间:2016-01-18 08:14:32

标签: javascript dom

我想知道是否有办法在DOM中获取已删除元素或窗口对象的“历史记录”?

例如,在页面加载期间删除自己的脚本标记。

<script id='deleteme'>
document.getElementById('deleteme').remove()
</script>

从DOM中删除后,有没有办法获取此脚本标记?

由于

2 个答案:

答案 0 :(得分:2)

删除dom结构中的元素时会触发DomNodeRemoved事件。它可用于捕获已删除的信息,但您必须手动维护历史记录。

有关如何使用它的一些示例,请参阅here

修改

不推荐使用变异事件,并且变异观察者可以替代它。 Mutation Observers可用于观察DOM中任何级别的DOM结构更改,并在检测到更改时执行回调。 David Walsh的blog解释了相同的内容。

答案 1 :(得分:1)

这太可怕了,变异观察者是一个很多更好的想法,但你总是可以对JavaScript进行热补丁:)

(function() {
  window.removeHistory = [];
  var oldRemove = HTMLElement.prototype.remove;
  HTMLElement.prototype.remove = function() {
    removeHistory.push({
      element: this,
      parent: this.parentNode,
      timestamp: new Date()
    })
    oldRemove.apply(this, arguments);
  };
})();

document.getElementById('first').remove();
document.getElementById('second').remove();
console.log(removeHistory);
<!-- results pane console output; see http://meta.stackexchange.com/a/242491 -->
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

<div id="parent">
  <p id="first">First</p>
  <p id="second">Second</p>
</div>

这仅适用于锻炼和/或快速和脏调试。不要使用这是生产代码,否则你会被grue吃掉。