首页 > 解决方案 > Javascript如何防止将HTML元素添加到DOM?

问题描述

假设我有以下 HTML 源代码:

<html>
  <head>
    <script src="myscript.js"></script>
    <meta charset="utf-8">
    <script>/*other script*/</script> 
    <link rel="stylesheet" ...> 
  </head>
  <body>
   <div>...</div>
  </body>
</html>

myscript.js 代码是什么样的,以防止添加 DOM 元素,就好像源代码最初是一样的?

<html>
  <head>
    <script src="myscript.js"></script>
  </head>
  <body>
  </body>
</html>

我已经尝试为所有节点覆盖 javascript DOM 操作方法,例如.append, .prepend, .appendChild,.inserBefore等。尽管如此,浏览器仍会添加<meta><script><link><div>等。似乎javascript覆盖只影响javascript创建的节点......这在IMO上是有道理的。

问题是:有没有办法防止添加作为下载 HTML 源的一部分的 DOM 项?

标签: javascripthtmldom

解决方案


您正在寻找Window.stop

window.stop() 在当前浏览上下文中停止进一步的资源加载,相当于浏览器中的停止按钮。

由于脚本的执行方式,此方法不能中断其父文档的加载,但会停止其图像、新窗口和其他仍在加载的对象。

这是一个例子:

<div>Div #1</div>
<p>Paragraph #1</p>
<div>Div #2</div>
<script>
  window.stop();
</script>
<p>Paragraph #2</p><!-- This element is not rendered -->


推荐阅读