Öznitelik tanımlı `onload` öğesini `<body>`öğesinden kaldırma

0

Soru

Birkaç saattir bunun üzerinde çalışıyorum ve işe yaramaz bir şeyi başarmaya çalışıyor olabileceğimi hissettiğim noktadayım. Herhangi bir tavsiye veya içgörü kesinlikle takdir edilmektedir!

Hedeflediğim kullanım durumu, tarayıcının DOM ayrıştırmasını çizme şansına sahip olmadan önce kesmeyi gerektirir. <body> öğe. Bunu başarmak için, bu tek astarı ilk komut dosyası olarak kullandım. <head> öğe:

document.replaceChild(document.createElement('html'), document.children[0]);

Bu, tarayıcının sonraki komut dosyalarını çağırmasını başarıyla engeller ve <body> öğe işlenmemiş kalır. Ancak, biçimlendirme bir onload öznitelik üzerinde <body> öğe, bu işlev veya kod tarayıcı tarafından çağrılmaya devam eder.

DOM ayrıştırmasını engelleyen bağlam şu şekildedir <head>, Ben kullanabilir miyim document.body.removeEventListener() olay dinleyicisini bırakmak için, çünkü body element henüz yok. Ayar window.onload -e doğru null hiçbir etkisi yoktur ve ayarlamayı engellemeye çalışmak da yoktur window.onload kullanım Object.defineProperty(window, 'onload', {...}). Her durumda, onload işlev veya deyimler yine de çağrılır.

Neden kullanmaktan kaçınamadığımla ilgili bariz soruyu önlemek için <body onload="..."> kullanım durumu geliştirici araçları içindir, bu yüzden belirli mutlak koşullar için olasılık yaratmaya çalışıyorum. Eğer yapılamazsa, bu benim projem için katil değil, ama neden yapılamayacağını bilmek isterim.

Şimdiden teşekkürler!

events html javascript
2021-11-21 14:39:38
1

En iyi cevabı

2

Sen-ebilmek kullanma Belgesi readystate de interactive durumu ve üzerine yaz onload nitelik.

document.onreadystatechange = () => {
   if (document.readyState === 'interactive') 
      window.onload = null;
}

(Tamlık için yorumunuzdan kodunuzu ekledi.)

2021-11-21 15:08:35

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................