Avatar billede Slettet bruger
29. september 2008 - 22:19 Der er 14 kommentarer og
1 løsning

Hvordan får jeg dette script til at virke i IE?

Hej eksperter,

Jeg har et enkelt script på siden www.ovrkll.com, der styrer en popupmenu. Desværre funger det ikke i Internet Explorer. Hvordan fikser jeg det?
Avatar billede mcardle Nybegynder
29. september 2008 - 23:15 #1
Du sætter en if ind i toppen af updateCursorPosition

if(!e){e = event}

Og så skal du lave en if med noget browser detection.

if(navigator.appName == "Microsoft Internet Explorer"){
  CursorX = e.x;
  CursorY = e.y;
}
else{
  CursorX = e.pageX;
  CursorY = e.pageY;
}

Prøv med det.

//mcardle
Avatar billede mcardle Nybegynder
29. september 2008 - 23:19 #2
Når du bruger visibility = hidden; så fylder den stadig den plads den har. Hvis du bruger display = "none"; og display = "block"; så bruger den ikke plads. Så behøver dine menuer ikke være absolute.

//mcardle
Avatar billede mcardle Nybegynder
29. september 2008 - 23:21 #3
Men det skal de jo så være, hvis du vil lave det på den måde med musekoordinater.

//mcardle
Avatar billede roenving Novice
30. september 2008 - 07:20 #4
-- det er generelt uklogt at forlade sig på browser-detection, gå i stedet efter at kigge efter det, du har brug for, altså f.eks.:

cursorX = e.pageX ? e.pageX : e.x;
cursorY = e.pageY ? e.pageY : e.y;
Avatar billede Slettet bruger
30. september 2008 - 08:24 #5
Hmm... Jeg er ikke så øvet i JavaScript, så jeg skal spørger lige:

cursorX = e.pageX ? e.pageX : e.x;
cursorY = e.pageY ? e.pageY : e.y;

Denne ændring alene løser ikke problemet. Hvad mangler jeg?
Avatar billede Slettet bruger
30. september 2008 - 08:51 #6
Således ser det ud nu:

function ShowMenu(id, x, y, title, content)
{
    SustainMenu();
    if (id != MenuId)
        UpdateMenu(id, x, y, title, content);
}
Avatar billede Slettet bruger
30. september 2008 - 08:52 #7
Forkert funktion. Her er den rigtige:

function UpdateCursorPosition(e)
{
    if (!e)
        e = event;
    CursorX = e.pageX ? e.pageX : e.x;
    CursorY = e.pageY ? e.pageY : e.y;
}
Avatar billede Slettet bruger
30. september 2008 - 09:54 #8
Okay, jeg har testet, og det eneste problem er, rigtigt nok, at UpdateCursorPosition ikke kan finde markøspositionen, hvorfor CursorX og -Y ikke ændres - jeg har testet ved at lade værdierne være 0 som defeault.
Avatar billede mcardle Nybegynder
30. september 2008 - 21:40 #9
Du skal sætte denne her uden for dine functioner

document.onmousemove = UpdateCursorPosition;

Bare sæt den lige under dine variabler i toppen, så skulle det virke.

//mcardle
Avatar billede Slettet bruger
30. september 2008 - 21:53 #10
Desværre virker det stadig ikke.
Se evt. kilden til www.ovrkll.com.
Avatar billede mcardle Nybegynder
30. september 2008 - 23:41 #11
Har siddet og leget lidt med det...

Hvis du fjerner, denne linie, og tilføjer det jeg har skrevet, så virker det:

document.captureEvents(Event.MOUSEMOVE);

//mcardle
Avatar billede mcardle Nybegynder
30. september 2008 - 23:41 #12
Avatar billede Slettet bruger
01. oktober 2008 - 09:01 #13
Ja, sgu! Gad vide, hvorfor jeg tilføjede den linje in the first place... Meh.
Tak for hjælpen!
Avatar billede mcardle Nybegynder
01. oktober 2008 - 13:15 #14
Hehe, tak for points.

//mcardle
Avatar billede Slettet bruger
01. oktober 2008 - 13:45 #15
Velbekomme - jeg har også redigeret sidens layout lidt, så kig hvis du er nysgerrig :)
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