javascript - 网站加载前显示空白网页

标签 javascript greasemonkey tampermonkey

我正在尝试使用 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/

相关文章:

javascript - 如何从字符串中提取时间?

javascript - 如何使此 Canvas 外菜单永久显示?

javascript - 将 KnockOut 条件串在一起

Javascript:根据条件在内存中加载大量数据

javascript - 是否可以通过 Tampermonkey 脚本修改响应 header ?

javascript - 为什么将授权从无更改为 GM_xmlhttpRequest 会破坏我的代码?

javascript - 如何仅禁用字符串部分而不是数字的粘贴选项?

javascript - 同步同一 Greasemonkey 脚本的多个实例

javascript - 如何压缩/解压缩用户脚本中的字符串?

javascript - 使用 jQuery 在文本输入上触发 keydown,在事件发生后保留值