javascript - CSS 显示的性能提升 :none or $. remove()?

标签 javascript jquery css firefox firefox-addon

我正在开发 Firefox WebExtension对于国外网站。它有许多我想删除的脚本和广告。我的扩展中有两个文件,一个 CSS 和一个 JS 文件。在 CSS 文件中,我隐藏了这些元素:

/* Hide some parts before removing them */
aside,
#site-footer,
.ads,
iframe,
script {
  display: none
}

在 JS 文件中,我用 jQuery 删除了它们:

// List of selectors to remove
var removeList = [
  'aside',
  '#site-footer',
  '.ads',
  'iframe',
  'script'
];
// Remove them
$(removeList.join(",")).remove();

我意识到使用 CSS 隐藏元素比 jQuery.remove() 函数快得多。我的问题是,在用 CSS 隐藏后,我真的需要删除这些元素吗?从DOM中移除它们会有什么表现吗?我的意思是,例如,iframe 在 display:none 之后是否仍然使用 CPU?如果是这样,我应该继续使用 JS 代码。否则有什么潜在的 yield 可以提供这种额外的移除?

最佳答案

属性 display:none 仅隐藏您的元素但不从 DOM 中删除。在此之后,您的所有 iframe 仍将使用 CPU,因为 CSS 仅控制元素在屏幕上的显示方式。

关于javascript - CSS 显示的性能提升 :none or $. remove()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44191666/

相关文章:

javascript - 使用加密模块进行 RSA 解密给出 "rsa OAEP sha512"

javascript - Twitter Bootstrap nav-tab 默认不加载

javascript - 在 React 中使用 AJAX 获取服务器数据

javascript - Chrome 扩展中的 JQuery .animate 真的很不稳定

javascript - AngularJS 将选项动态附加到下拉列表

javascript - WebView 使用 javascript getElementsByClassName() 无法正确显示

javascript - Selenium - ElementNotVisibleException。元素在 Safari 9.1 中可见,但在 10.1 中不可见?

jquery - 如何使用 CSS 将 "+"旋转为 "x"?

html - 是否可以将菜单保存为 css

html - 如何创建一个 2 列来分隔表单中的标签和输入元素