Avatar billede webcreator Nybegynder
27. maj 2006 - 12:21 Der er 16 kommentarer og
1 løsning

Indsæt kode i <head>

Hej Eksperter.

Jeg har brug for at indsætte noget kode i <head> sektionen af et dokument - men jeg kan ikke få det til at fungere i Internet Explorer. Kender i løsningen? Jeg har både prøvet med innerHTML på head, og at gøre det vha. DOM'en, men intet synes at virke i IE. Ingen problemer i Firefox/Mozilla dog.

På forhånd tak :)
Avatar billede webcreator Nybegynder
27. maj 2006 - 12:25 #1
Det skal siges at en IE-only løsning er helt ok. Jeg kan altid lave et tjek på browseren

if (browser == ie)
  // Gør det på den forkerte måde
else
  // Gør det på den rigtige måde
Avatar billede nyp Nybegynder
27. maj 2006 - 12:41 #2
Nedenstående laver det samme som
<script language="JavaScript1.2" src="test.js" type="text/javascript"></script>


    var html_doc = document.getElementsByTagName('head').item(0);
    if (js_file) html_doc.removeChild(js);
    var js_file = document.createElement('script');
    js_file.setAttribute('language', 'JavaScript1.2');
    js_file.setAttribute('type', 'text/javascript');
    js_file.setAttribute('src', "test.js");
    html_doc.appendChild(js_file);
Avatar billede webcreator Nybegynder
27. maj 2006 - 12:47 #3
Jeg har brug for at indsætte en streng - og det er en helt anden ting end at indsætte et element. Helt præcist er der tale om, at jeg har brug for at kunne tilføje '<style> css kode </style>'
Bemærk dog at jeg IKKE kan bruge <link>, som normalt inkluderer CSS, og det er heller ikke en løsning at tilføje CSS koden i body, da dette område er redigerbart (jeg arbejder med DesignMode i browseren).
Avatar billede nyp Nybegynder
27. maj 2006 - 13:06 #4
var html_doc = document.getElementsByTagName('head').item(0);
    var style_file = document.createElement('style');
    style_file.setAttribute('type', 'text/css');
    html_doc.appendChild(style);
Avatar billede nyp Nybegynder
27. maj 2006 - 13:11 #5
hov fik trykket på send for tidlig, her kommer det hele:

Jeg vil to dette burde virke, uden dog at have testet det.
var html_doc = document.getElementsByTagName('head').item(0);
    var style_file = document.createElement('style');
    style_file.setAttribute('type', 'text/css');

    cssText = document.createTextNode(".testClass{color: red;}");
      style_file.appendChild(cssText);

    html_doc.appendChild(style_file);
Avatar billede webcreator Nybegynder
27. maj 2006 - 13:51 #6
Man kan ikke append'e childs til et StyleElement i IE. Man kan til gengæld bruge innerHTML - men der genererer en "Unknown Runtime Error" hos mig.

cssElement = document.createElement("style");
cssElement.type = "text/css";
cssElement.innerHTML = "noget CSS her..";
Avatar billede roenving Novice
27. maj 2006 - 13:53 #7
-- men du kan tilføje rules !-)
Avatar billede webcreator Nybegynder
27. maj 2006 - 14:06 #8
Roenving : Kan du uddybe? Don't follow :)
Avatar billede nyp Nybegynder
27. maj 2006 - 14:22 #9
Avatar billede webcreator Nybegynder
27. maj 2006 - 14:29 #10
Det duer ikke i mit tilfælde da jeg importerer CSSen fra en CSS fil, desværre
Avatar billede webcreator Nybegynder
27. maj 2006 - 14:38 #11
Situationen er den, at jeg har en side med et iFrame i - og jeg har brug for at kunne tilføje styles til dokumentet INDE i iFramet. Man kunne måske sige at jeg bare skulle åbne en side inde i iFramet med en reference til stylesheetet, men så nemt er det ikke. Situationen er nemlig den, at iFramet bliver til et redigerbart område (DesignMode) - og hvis jeg loader en side i iFramet, så SKAL den ligge et bestemt sted, for at fx billeder har samme relative sti, som i forhold til min index-side. Det er lidt teknisk det her, og jeg vil ikke uddybe det nærmere. Situationen er blot, at jeg skal have tilføjet alle mine styles til det dokument som browseren skaber inde i iFramet :)
Avatar billede webcreator Nybegynder
27. maj 2006 - 14:40 #12
Og dette er super nemt i Firefox:

head = iFrameDoc.getElementsByTagName("head").item(0);
head.innerHTML = head.innerHTML + mitCSSdoc;
Avatar billede nyp Nybegynder
27. maj 2006 - 15:11 #13
kan du heller ikke bruge <link> hvis det bliver hentet dynamisk?
Avatar billede webcreator Nybegynder
27. maj 2006 - 15:11 #14
iFrameDoc.createStyleSheet("sti/til/stylesheet.css");

Tænk at løsningen var så simpel.. :)
Avatar billede webcreator Nybegynder
27. maj 2006 - 15:12 #15
nyp : Bliver hentet dynamisk? Men nej, det kan ikke lade sig gøre. Men ovenstående virker :)
Avatar billede nyp Nybegynder
27. maj 2006 - 15:13 #16
Det var nu også det jeg mente med dynamisk :)
Avatar billede webcreator Nybegynder
27. maj 2006 - 17:15 #17
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester