我正在尝试使用 tampermonkey 为其中一个网站创建主题,所以基本上我想删除页面中的所有内容,然后将自定义 HTML 添加到页面中。但是在我的主题出现之前,实际的网页会显示几秒钟.我希望网站完全空白,直到我的自定义脚本添加一些自定义 HTML。
我向 tampermonkey 添加了以下代码
// @run-at document-start
我添加了以下代码来首先清空网页
document.body.innerHTML = '';
//my remaining custom codes to add few tables and stuffs
所以我得到了这个错误
VM82 userscript.html:2 错误:执行脚本“不显示”失败!无法将属性“innerHTML”设置为 null
为了解决这个问题,我添加了 100 毫秒的 settimeout,然后
setTimeout(function(){
document.body.innerHTML = '';
}, 50);
但眨眼间仍然显示第二个实际网页。
最佳答案
当脚本在document-start
运行时无法保证尸体存在。通常情况相反:文档完全是空的,仅定义了 document.documentElement,它是 <html>
的 DOM 元素。标签。
简单stop the current loading progress并使用 document.open + document.write:
// ==UserScript==
// @name blank out
// @match *://*/*
// @run-at document-start
// ==/UserScript==
stop();
document.open('text/html', 'replace');
document.write(`
<html>
<body>foo</body>
</html>
`);
请注意,如果站点的 CSP 特别严格,则它可能不起作用。在这种情况下,您必须使用可以放宽 CSP 的扩展(或者您可以自己编写这样的扩展)。
关于javascript - 网站加载前显示空白网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54709445/