20. oktober 2007 - 12:28Der er
13 kommentarer og 1 løsning
eksternt stylesheet uden for head sektionen eller noget lignende
Et javascript kan læggen i head sektionen eller i body sektionen hvor der er brug for det. Men med CSS er der kun mulighed for enten et link i head sektionen til eksternt css eller at skrive inline css i de enkelte html tags.
Jeg har nogle sider hvor jeg ikke har mulighed for at tilføje noget til head sektionen (der allerede har link til eksternt css), men alligevel godt vil undgå at skrive inline css. Jeg kan sagtens skrive flere eksterne css dokumenter, men jeg kan ikke linke til dem i head sektionen. Kan man på anden måde linke til dem uden for head sektionen?
Nej da ... det skal vel være brugbart (= cross-browser) ;o)
Der er voldsom forskel på, hvordan CSS/stylesheets fungerer i de forskellige browsere. Derudover _må_ et stylesheet ikke befinde sig i andet end head-elementet, så jhe-ting's eksempel er ikke validt. Funktionen 'escape' er forøvrigt forlængst deprecated i JavaScript og afløst af 'encodeURI' og 'encodeURIComponent'
jhe-ting >> Så har du da skrevet en masse overflødigt kode! Såvidt jeg kan se, bruger du 3/4 af scriptet til ulovligt at append'e et link-element til body-elementet :) Et inline stylesheet eller link-element må kun findes i head-elementet. De eneste styles, du kan sætte i body-elementet, er direkte i style-attributten på de enkelte elementer/tags.
Nej, hvis du udskifter escape med encodeURI sker der noget fuldstændig andet - og du får med garanti ikke loaded noget somhelst. F.eks. vil alle slashes blive ændret og gøre URL'en ubrugelig i dén sammenhæng :)
roenving >> Det er en mulighed, men flere browsere har haft voldsomme besværligheder med stylesheets loaded efter markup-indlæsningen (og da de hører hjemme i head-elementet, er det måske ikke helt mærkeligt). Jeg ved dog ikke objektivt, om det stadig er tilfældet :)
Jeg har kun brugt den til debug af testudgaver. Når det så ser ordentligt ud overføres den nye CSS til et 'master'-style-sheet, og debug koden kan fjernes igen.. ;)
testede roenvings forslag med dette simple farveskift:
<body> <p>Her er noget tekst</p> <script type="text/javascript"> var newSS = document.createElement("style"); newSS.innerHTML = ".blue{color:blue;}"; document.getElementsByTagName("head")[0].appendChild(newSS); </script> <p class="blue">Her er noget tekst</p> </body>
Det virker i Firefox, men IE blokerer først scriptet som aktivt indhold, og selv hvis man tillader det, reagerer den ikke på den nye style.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.