Αγαπητοί,
παίζω με ένα CMS το οποίο παράγει δυναμικά σελίδες HTML και έχω μερικό έλεγχο στο αποτέλεσμα,λ.χ. μπορώ να εισάγω javascript. Η παραγόμενη σελίδα τρέχει στο intranet, αλλά φορτώνει ένα CSS από το internet, στο οποίο η πρόσβαση είναι εξαιρετικά αργή (αργό DNS resolution). Προκύπτει λοιπόν το πρόβλημα πως, όσο το εξωτερικό CSS δεν έχει φορτώσει (10"+), η σελίδα δεν εμφανίζεται (βλ.
css render blocking). Η παραγόμενη σελίδα χονδρικά έχει τη δομή:
<html>
<head>
<!-- θέση 1 για δικό μου κώδικα -->
<link rel="stylesheet" href="http://external.domain/style.css"/>
</head>
<body>
<!-- θέση 2 για δικό μου κώδικα -->
</body>
</html> Προσπάθησα με JS στην θέση 1 να διαγράψω τον κόμβο link που φορτώνει το εξωτερικό CSS. Όταν το κάνω "απευθείας" στην θέση 1:
var links = document.getElementsByTagName("link");
links[0].parentNode.removeChildElement(links[0])
τότε δεν βρίσκει (ακόμα) τον κόμβο link... κάπως αναμενόμενο αφού ο browser δεν έχει κατασκευάσει το DOM δένδρο πέρα από την θέση 1. Μεταφέροντας τον κώδικα σε timer...
window.setTimeout(function(){
var links = document.getElementsByTagName("link");
links[0].parentNode.removeChildElement(links[0]);
},10);
... ο browser συνεχίζει να "κολλάει" ακόμα και όταν ο link κόμβος έχει αφαιρεθεί, τουλάχιστο σε FF.
Ιδέες;