Avatar billede steven Nybegynder
27. maj 2005 - 11:14 Der er 11 kommentarer og
3 løsninger

Optimere Javascript til de mest gængse browsere

Hej!

Jeg har omkring 600 linier javascript, der virker i IE, men vil også gerne have det til at virke i FireFox + alle de andre gængse browsere... Derfor er jeg på jagt efter gode links, råd eller andet der kan hjælpe mig med dette.

Hvis der er nogen der har lyst til at "konvertere" koden er I meget velkomne til dette :-)
(Så kommer der flere points på højkant!)

Mvh, Steven
Avatar billede roenving Novice
27. maj 2005 - 11:36 #1
Det lyder nærmere som en arbejdsopgave !-)
Avatar billede steven Nybegynder
27. maj 2005 - 12:34 #2
tjaaa, man kan jo starte med at finde nogle links frem :-)
Avatar billede steven Nybegynder
27. maj 2005 - 15:32 #3
Gode ideer til at få følgende side til at fungere i FireFox modtages gerne - og belønnes med 10-15 points pr. ide:
http://www.mountfield.dk/realtime/page.php

Mvh, Steven
Avatar billede skovenborg Nybegynder
27. maj 2005 - 21:01 #4
først og fremmest bør du droppe den browser-sniffing du bruger (isMinNS4 osv.) Istedet lave en feature-test, dvs. teste om en feature er understøttet af browseren når den skal bruges.

Fx når du skal have fat i et element, så kunne du skrive:
if (document.getElementById) {
    elm = document.getElementById("elementID");
}
else if (document.all) {
    elm = document.all["elementID"];
}

Typisk bruger jeg en lille funktion til den slags:
function getElm(elmId) {
    if (document.getElementById) {
      return document.getElementById(elmId);
    }
    else if (document.all) {
      return document.all[elmId];
    }
    else return null;
}

Så kan du kalde den sådan her: elm = getElm("elementId");
Som du kan se har jeg ikke tager document.layers med - den kan du tilføje hvis du lyster, men jeg er efterhånden holdt op med at understøtte de gamle netscape browsere på den sigt. document.layers var så fuld af fejl og mangler så moderne scripts vil sikkert ikke virke i den selvom man prøvede at bruge document.layers.
Avatar billede steven Nybegynder
30. maj 2005 - 11:18 #5
Hej Skovenborg,

Tak - jeg har benyttet din funktion, og det virker :-)
Giv et svar, og så får du 15 points!

Har du en ide til hvorfor MoveLayerTo functionen ikke virker i FireFox?

function moveLayerTo(div, x, y)
{
  if (isMinNS4)
  {
    div.moveTo(x,y);
  }
  if (isMinIE4)
  {
    div.style.left = x;
    div.style.top  = y;
  }
}

Mvh, Steven
Avatar billede skovenborg Nybegynder
30. maj 2005 - 11:32 #6
fordi du mangler enheder, som er påkrævet i Mozilla (IE har som standard pixel, hvorfor det virker der). Dit script skal derfor se sådan ud:
function moveLayerTo(div, x, y)
{
  if (isMinNS4)
  {
    div.moveTo(x,y);
  }
  if (isMinIE4)
  {
    div.style.left = x+"px";
    div.style.top  = y+"px";
  }
}
Avatar billede roenving Novice
30. maj 2005 - 11:33 #7
Fordi længder i css ifølge standarden _skal_ overses, hvis de ikke har enheder på, så:

function moveLayerTo(div, x, y)
{
  div.style.left = x + 'px';
  div.style.top  = y + 'px';
}

-- og drop understøttelse af gamle browsere, medmindre du er pisket !-)
Avatar billede roenving Novice
30. maj 2005 - 11:36 #8
-- og kaldet skal så have objektet med:

moveLayerTo(document.getElementById('minDiv'), 15, 15);
Avatar billede skovenborg Nybegynder
30. maj 2005 - 11:41 #9
eller moveLayerTo(getElm('minDiv'), 15, 15); hvis du stadig har den funktion liggende.
Avatar billede steven Nybegynder
30. maj 2005 - 11:56 #10
Hej, tak skal I have - nu virker det :-)
Roenving, vil du ikke lige smide et svar også, så giver jeg jer følnende points:
Skovenborg: 15+10
Roenving: 10

Takker for hjælpen!
Avatar billede steven Nybegynder
30. maj 2005 - 11:56 #11
...hvis I har flere gode ideer må I gerne sige til :-)
Avatar billede roenving Novice
30. maj 2005 - 12:25 #12
Oki '-)
Avatar billede steven Nybegynder
30. maj 2005 - 12:38 #13
svar for at få point til at gå op...
Avatar billede roenving Novice
30. maj 2005 - 14:52 #14
Tak for point ;~}
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