Отображение пустой веб-страницы перед загрузкой веб-страницы - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь создать тему для одного из веб-сайтов, используя 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 ОШИБКА: сбой выполнения скрипта 'display none'!Невозможно установить свойство 'innerHTML' со значением NULL

. Чтобы исправить это, я добавил settimeout 100 мс, а затем

setTimeout(function(){
document.body.innerHTML = '';
}, 50);

Но все равно для мгновенного отображения второй актуальной веб-страницы отображается.

1 Ответ

0 голосов
/ 15 февраля 2019

Когда скрипт выполняется на document-start, нет гарантии, что тело существует.Обычно ожидается обратное: документ полностью пуст и определен только document.documentElement, который является элементом DOM для тега <html>.

Просто , остановите текущий процесс загрузки и используйте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 (или вы можете написать такое расширение самостоятельно).

...