【发布时间】:2017-05-26 00:19:24
【问题描述】:
我正在为国外网站开发 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 中删除它们时会有任何性能吗?我的意思是,例如,在display:none 之后,iframe 是否仍使用 CPU?如果是这样,我应该继续使用 JS 代码。否则有什么潜在的收益可以提供这种额外的移除?
【问题讨论】:
-
jQuery 所做的任何事情都比原生 DOM 方法慢得多——当您使用 firefox 时,您可以使用以下代码来移除 jQuery 要求,至少要移除代码的一部分:
document.querySelectorAll(removeList.join(",")).forEach(e => e.remove()) -
答案是“视情况而定”
标签: javascript jquery css firefox firefox-addon