Avatar billede kuglepen Nybegynder
29. januar 2007 - 12:56 Der er 10 kommentarer

markering af links i IE

Jeg har denne fil ( www.heni.dk/linktest.html ) som virker uden problemer i Firefox, men ikke i IE - hvilket den meget gerne også skulle. Er der et klogt hovede, der kan løse mit problem?
Avatar billede windcape Praktikant
29. januar 2007 - 13:12 #1
Prøv at lave noget rigtigt html før du giver dig ud i at bruge javascript.

Javascript er MEGET afhæning af hvor valid din markup er.
Avatar billede kuglepen Nybegynder
29. januar 2007 - 13:23 #2
jeg er ikke helt med på hvad du mener... Mener du at jeg skal lave en omgang <html><head> osv, i den fil?

Jeg bliver nødt til at bruge javascipt, for at kunne markere links - sådan at markeringen bliver ved det pågældende link, og forsvinder hvis man klikker på et andet link. Ved at lave en active og visited, bliver markeringen ikke ved klik andet steds på siden. Og i Firefox virker det ikke.

Men egentligt er jeg mindst lige så interesseret i at vide, hvorfor mit script ikke fungerer i IE... når nu det kører som smurt i firefox.

Det ville være meget lærerigt, hvis jeg kunne få det at vide.
Avatar billede olebole Juniormester
29. januar 2007 - 15:34 #3
<ole>

Prøv at forklare, hvad det præcist er, hvad du ønsker at lave - og hvorfor ... så kan vi nok finde en løsning, der funker  =)

/mvh
</bole>
Avatar billede kuglepen Nybegynder
29. januar 2007 - 15:48 #4
Jeg har en række links, som når man klikker på et af disse link, skal dette markeres og kun dette - som det er tilfældet på siden (heni.dk/linktest.html) i Firefox. Scriptet skal påsætte en ekstra klasse (selected) til den eksisterende klasse (link) på det pågældende link, hvormed linket bliver markeret (med css).
Var det tydeligt nok? ellers vil jeg gerne forsøge at gøre det tydeligere...


Jeg har forsøgt at lave en alert(elm), hvormed IE skriver [objekt] og Firefox skriver elementets navn (korrekt). Så det kunne tyde på at IE ikke registrerer de forskellige 'a' tags, og derfor ikke skriver det korrekt ud og dermed påhæfter den ekstra klasse.
Avatar billede kuglepen Nybegynder
29. januar 2007 - 15:50 #5
hvis du åbner siden i henholdsvis IE og firefox, og klikker på et link, vil du se forskellen. Jeg har sat linket "test 6" til at have den udvidede klasse, som et link skal have når den er markeret.
Avatar billede olebole Juniormester
29. januar 2007 - 16:19 #6
Jeg er på vej udaf døren, så jeg må prøve at kikke på det imorgen. Én ting er dog sikkert: Du bør absolut undgå at skifte/tilføje CSS-klasse på HTML-elementer!
Det performer ekstremt elendigt, da browseren hvergang genberegner hele siden, hvilket er vildt overkill - og ved komplekse sider kan tage flere sekunder!  ;o)

Skift i stedet de enkelte style-properties på elementets style-objekt  =)
Avatar billede windcape Praktikant
30. januar 2007 - 02:03 #7
kuglepen

jeg mener du skal lave valid markup (html4 i din tilfælde) , før du kan regne med at javascript virker som beregnet.

Det kan overhovedet ikke betale sig at forsøge at hjælpe med noget som helst javascript, når din markup ikke er valid, og browserne derfor kører i quirks-mode.
Avatar billede olebole Juniormester
30. januar 2007 - 15:12 #8
Jeg ved stadig ikke, hvad du vil lave - og hvorfor (det sidste er nok det aller vigtigste at svare på). Skal siden reloades og informationer sendes med i URL'en - og hvorfor så ikke gøre tingene på serveren?
Avatar billede kuglepen Nybegynder
16. februar 2007 - 12:35 #9
Jeg har fundet en løsning.

koden skal se sådan her ud:


function createOnclickEventsOnA(elm) {
    temp[temp.length] = elm;
    var aCol = elm.getElementsByTagName("a");
    var aColLength = aCol.length;
    for(var i=0; i<aColLength; i++) {
        var event = function (e) {
            var targ;
            if (!e) var e = window.event;
            if (e.target) targ = e.target;
            else if (e.srcElement) targ = e.srcElement;
            if (targ.nodeType == 3) // defeat Safari bug
                targ = targ.parentNode;
               
            selectThis(targ, temp[temp.length-1]);
        }
        EventHandler.addEvent(event, aCol[i], "click");
    }
}

Tilsyneladende, når man bruger attachEvent, så refererer this ikke længere til objektet eventen bliver kaldt fra, men derimod til window objektet. Og det kan man ikke bruge til en skid. Ære være IE.

Den løsning jeg kom frem til var at sende eventen med og fiske target ud af den. Men det er så også forskelligt fra browser til browser...

tak for hjælpen. Undskyld jeg ikke kunne formulere mit problem tydeligt.
Avatar billede olebole Juniormester
20. februar 2007 - 15:24 #10
Hvis du bruger attachEvent korrekt, kan du sagtens få this til at referere til objektet(elementet), der udløser event'en - på samme måde som addEventListener. Kaldet skal blot pakkes ind i en anonym funktion ... helt ifølge reglerne for OOP i ECMA/JavaScript.
Kan du ikke få det til at virke, er det således nok ikke MS eller IE's skyld  ;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