gpt4 book ai didi

javascript - 如何使用 Chrome 扩展程序在页面加载前隐藏所有内容

转载 作者:行者123 更新时间:2023-12-03 16:27:32 26 4
gpt4 key购买 nike

我尝试使用内容脚本

list

"content_scripts": [
{
"matches": ["*://*/*"],
"js": ["js/content_script.js"]
}
]

content_script.js

_ini();
function _ini(){
document.body.style.display="none";
}

但它先加载页面然后隐藏它。

所以我尝试了webNavigation

chrome.webNavigation.onCommitted.addListener(function(details){
alert('webnav');
document.body.style.display="none";
});

但是上面的方法也不起作用。该页面在页面加载之前提醒 webnav 但显示无效果。

我真正需要的是隐藏整个站点而不向客户显示任何元素。有什么想法吗?

最佳答案

现有答案在大多数情况下都是正确的,但我想提供更多有关所用方法含义的上下文。在您准备好之前隐藏页面的推荐方法是:

list .json:

{
...
"content_scripts": [{
"matches": ["*://*/*"],
"js": ["contentscript.js"],
"run_at": "document_start"
}],
...
}

contentscript.js

document.documentElement.style.visibility = 'hidden';
document.addEventListener('DOMContentLoaded', function() {
// ... do something ... and then show the document:
document.documentElement.style.visibility = '';
});

visibility:hiddendisplay:none

您应该使用display = 'none',但是visibility = 'hidden'as suggested by Parag Gangli for .首选 visibility:hidden 而不是 display:none 的原因是 visibility 不会影响元素的任何维度属性。当一个元素设置为 display:none 时,该元素及其所有后代节点的宽度和高度都将为 0。这可能会破坏依赖于涉及元素尺寸计算的多个页面在文档树中。

切换 display:none 的另一个结果是滚动位置和 anchor (#id-of-something) 被破坏。浏览器将不再跳转到 anchor 或上一个滚动位置,而是在滚动位置 (0,0) 显示页面。这是非常不受欢迎的。

document.body 对比 ... 对比 document.documentElement

document.body"run_at": "document_start" 时不存在已设置,因此无法使用。 document.getElementsByTagName('html')[0] 有效,但可以更简洁地写成 document.documentElement(= 文档的根)。

window.onloadDOMContentLoaded

window.onload 只会在所有资源(图片、帧等)加载完毕时触发。这可能需要一段时间,因此在触发 window.onload 事件之前隐藏整个页面不是一个好主意。

在大多数情况下,您的扩展仅依赖于文档结构,因此修改文档并在 DOMContentLoaded 事件中显示文档就足够了。

关于javascript - 如何使用 Chrome 扩展程序在页面加载前隐藏所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24626809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com