Avatar billede saudoo Nybegynder
16. maj 2006 - 23:34 Der er 19 kommentarer og
1 løsning

Indsætte i css hvis IE

Hej eksperten,

Jeg har et mindre problem.
Jeg skal have et javascript til at ændre en css property på onload, hvis browseren er IE.

Er det forholdsvis enkelt?

Skal lige siges jeg nu har siddet i ca 2½ time, for at finde et svar. :\ :)
Avatar billede loevgaard Praktikant
16. maj 2006 - 23:54 #1
if(strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
echo "<body onload=\"IEFunc();\">";
} else {
echo "<body>";
}
Avatar billede saudoo Nybegynder
17. maj 2006 - 00:03 #2
Så jeg skal lave noget i denne retning:

<script type="text/javascript">
function IEfunc() {
document.getElementById("div_id").style.Property = "værdi";
}

if(strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
echo "<body onload=\"IEFunc();\">";
} else {
echo "<body>";
}
</script>
Avatar billede saudoo Nybegynder
17. maj 2006 - 00:18 #3
Har lige prøvet dette:

<script type="text/javascript">
    if(strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
    document.getElementById("sheetmenu").style.top = "8px";
    }
</script>
<div id="sheetmenu" style="position: relative; top: 4px;">
    <a href="?p=blivspejder" onmouseover="spejder.src='menu/blivspejder_on.gif'" onmouseout="spejder.src='menu/blivspejder_off.gif'"><img src="menu/blivspejder_off.gif" id="spejder" alt="" style="border: 0px;"></a>
</div>

Hvad er der galt?.. :\ Den bliver ved med at være 4px;
Avatar billede olebole Juniormester
17. maj 2006 - 00:30 #4
<ole>

<script type="text/javascript">
    if(<?=strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")?> > 0) {
        document.getElementById("sheetmenu").style.top = "8px";
    }
</script>

/mvh
</bole>
Avatar billede olebole Juniormester
17. maj 2006 - 00:32 #5
- men den gør jo det samme i Opera, som 'klæder sig ud' som en IE. Du kan skrive:

<script type="text/javascript">
    if (navigator.userAgent.indexOf("MSIE") && !document.opera) {
        document.getElementById("sheetmenu").style.top = "8px";
    }
</script>
Avatar billede olebole Juniormester
17. maj 2006 - 00:33 #6
- vrøvl ...!
    if (navigator.userAgent.indexOf("MSIE")!=-1 && !document.opera) {
Avatar billede saudoo Nybegynder
17. maj 2006 - 00:47 #7
Hm.. Det virker ikke helt. Der ændres ikke noget.

Det kan ikke være fordi jeg har Ie7 beta2 installeret?
Avatar billede olebole Juniormester
17. maj 2006 - 01:16 #8
Man kan ikke udvikle i en beta af en kommende browser  :)

Hvad returnerer dette:
  alert(navigator.userAgent)
Avatar billede saudoo Nybegynder
17. maj 2006 - 10:20 #9
Den skriver: MSIE 7.0;

:\

Kom forresten til at acceptere l0vgaard's svar. Skal nok oprette et nyt spørgsmål senere, så du retmæssigt kan få dine points til den tid. :)
Avatar billede saudoo Nybegynder
17. maj 2006 - 19:43 #10
har prøvet:

if (navigator.userAgent.indexOf("MSIE 7.0") && !document.opera) {
        document.getElementById("sheetmenu").style.top = "8px";
    }

Men det virker ikke.
Samme med det normale MSIE. Det rykker sig ikke de 8 px ned fra toppen..

Scriptet skal stå i headeren ikke?
Avatar billede olebole Juniormester
17. maj 2006 - 19:57 #11
- jeg tror, du må lægge et link  :)
Avatar billede saudoo Nybegynder
18. maj 2006 - 10:36 #12
:) Okay.. Men lad være med at komme og sige alt muligt med at siden ikke validerer. Det er ikke mig der har lavet det hele, bygger egentlig bare videre. :)

www.gallerne.dk
Avatar billede saudoo Nybegynder
18. maj 2006 - 10:36 #13
Det er menuen i venstre øverste hjørne..
Avatar billede olebole Juniormester
18. maj 2006 - 18:27 #14
ahem ... jeg prøver virkelig, men i det mindste burde du altså sætte et par html-tags om det hele - og scriptet i bunden skal så lægges lige indenfor </body>-tagget  :)

Anyway, så er fejlen, at elementet jo slet ikke er skrevet til browseren, når du kalder det  :)

Enten kan du lægge det ned ved det andet script (i bunden af siden), eller også kan du skrive:

window.onload = function() {
    // script, der skal køres på onload her
}

- og så ser jeg zq i øvrigt lige en fejl i det, jeg har givet dig. Der skal jo stå:
    navigator.userAgent.indexOf("MSIE 7.0")!=-1

'indexOf' returnerer det sted i hele strengen, hvor 'MSIE 7.0' begynder. Står det som det allerførste i strengen, returneres 0.
Står der derimod 'abcMSIE 7.0', returneres 3.
Eksisterer 'MSIE 7.0' slet ikke i strengen, returneres -1  ;o)
Avatar billede saudoo Nybegynder
18. maj 2006 - 19:58 #15
Hahaha.. nej nej nej.. hvad i alverden? :D Skynder mig lige at smide de html-tags rundt om koden.. :D

Og så kigger jeg på din kommentar bagefter. :)
Avatar billede saudoo Nybegynder
18. maj 2006 - 20:10 #16
Du er gud.. :D Mange tak.

Jeg kan ikke rigtig javascript, må jeg indrømme. :P Men har for alvor fået blod på tanden. I hvert fald tak for hjælpen.. Jeg opretter lige et spørgsmål til dig, så du kan få points også.

Så længe jeg ikke har brugt alle 200 points, så skulle det være iorden. :)
Avatar billede olebole Juniormester
18. maj 2006 - 20:16 #17
Nej, stop ... jeg har rigeligt ... du skal ikke åbne et nyt spm  :)
Avatar billede olebole Juniormester
18. maj 2006 - 20:22 #18
Den kommentar skulle lige fyres hurtigt af, så her kommer forklaringen  =)

Kan du se logikken i løsningen? Browseren læser dokumentet fra toppen og ned - præcis som os andre.
Hvis et element står længere nede på siden end selve scriptet, kan JavaScript derfor ikke finde elementet ... det eksisterer simpelthen endnu ikke i 'denne verden'.

Løsningen er altså at vente med at kalde elementet, hvilket kan ske ved at skrive scriptet i bunden af siden - eller kalde scriptet på vinduets onload-event  ;o)
Avatar billede saudoo Nybegynder
18. maj 2006 - 20:26 #19
Heh.. skal nok lade være så. Tak for det. :P

Hm. Altså, Javascript kører siden igennem når den "rå html" er skreven ud? Det giver også mere mening hvorfor jeg skulle sætte den ind i en window.onload før det virkede så. :)

Tænkte bare slet ikke i de baner.
Avatar billede olebole Juniormester
18. maj 2006 - 21:15 #20
Selvtak  :)

Selvfølgelig tænker du ikke i de baner, når du er ny i JS - men bare rolig ... det kommer med tiden  ;o)
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