Я работаю над этим уже несколько часов и нахожусь на том этапе, когда мне кажется, что я, возможно, пытаюсь выполнить что-то невыполнимое. Любой совет или понимание, безусловно, приветствуются!
Вариант использования, на который я ориентируюсь, требует прерывания DOM-анализа браузера, прежде чем у него появится возможность нарисовать <body>
элемент. Для достижения этой цели я использовал этот однострочный текст в качестве первого сценария, вызванного в моем <head>
элемент:
document.replaceChild(document.createElement('html'), document.children[0]);
Это успешно предотвращает вызов браузером любых последующих сценариев, и <body>
элемент остается не визуализированным. Однако, если разметка включает в себя onload
атрибут на <body>
элемент, эта функция или код по - прежнему вызывается браузером.
Поскольку контекст, который перехватывает синтаксический анализ DOM, находится в <head>
, Я не могу использовать document.body.removeEventListener()
чтобы удалить прослушиватель событий, потому что body
элемента еще не существует. Установка window.onload
Для null
не имеет никакого эффекта, и попытка перехватить настройку window.onload
с помощью Object.defineProperty(window, 'onload', {...})
. В каждом случае, onload
функция или операторы все равно вызываются.
Чтобы предупредить очевидный вопрос о том, почему я не могу просто избежать использования <body onload="...">
, вариант использования предназначен для инструментов разработчика, поэтому я пытаюсь создать непредвиденные обстоятельства для определенных абсолютных условий. Если это невозможно сделать, это не убивает мой проект, но я бы очень хотел знать, почему это невозможно сделать.
Заранее спасибо!