Am fost de lucru pe acest lucru pentru câteva ore și sunt în punctul în care simt că ar putea fi încercarea de a realiza ceva nefunctional. Orice sfat sau insight este cu siguranta apreciat!
În caz de utilizare sunt de direcționare necesită întreruperea browser-e DOM parsarea înainte de a avea posibilitatea de a trage <body>
element. Pentru a realiza acest lucru, am folosit-o linie ca primul script numit în <head>
element:
document.replaceChild(document.createElement('html'), document.children[0]);
Acest lucru previne cu succes browser-ul de asteptare ulterioare script-uri, și <body>
element rămâne ne-randat. Cu toate acestea, dacă include un marcaj onload
atribut pe <body>
element, care funcția sau codul este încă numit de către browser.
Ca și contextul în care se interceptează DOM parsarea este în <head>
Nu pot folosi document.body.removeEventListener()
să renunțe la eveniment ascultător, pentru că body
elementul nu exista încă. Setarea window.onload
pentru a null
nu are nici un efect, și nici nu încearcă să intercepteze setarea de window.onload
folosind Object.defineProperty(window, 'onload', {...})
. În fiecare caz, onload
funcția sau declarații obține încă numit.
Pentru a preîntâmpina evident întrebarea de ce nu pot evita folosind <body onload="...">
, în caz de utilizare este pentru producător de scule, așa că am încercat să creeze de urgență pentru anumite condiții absolute. Dacă nu se poate face, nu este criminal pentru proiectul meu, dar aș vrea să știu de ce nu se poate face.
Multumesc anticipat!