Avatar billede mmmtm Nybegynder
06. december 2008 - 10:35 Der er 15 kommentarer og
1 løsning

crossbrowser kompabilitet - overblik

Hvordan får jeg det bedste overblik over forskellighederne i de gængse browsere, så jeg kan kode herefter ? Jeg har en side der validerer korrekt, men i ff2.0.0.18 er der nogle funktioner der ikke virker, og jeg er helt blank på hvorfor. Der må findes en oversigt somewhere ?
Avatar billede jantzen88 Nybegynder
06. december 2008 - 11:16 #1
Bruger selv http://www.w3schools.com/js/default.asp når jeg er lidt i tvivl om de forskellige functioner.
Avatar billede mmmtm Nybegynder
06. december 2008 - 11:49 #2
Jeg syntes ikke helt jeg kan se hvad der fungerer hvor på det link...? Helt konkret har jeg en funktion der kaldes ved onChange på en select, og i ff sker der absolut intet.
Avatar billede micc Nybegynder
06. december 2008 - 12:58 #3
Gode oversigter over sådanne forskelle kan findes på quirksmode.org, se fx http://quirksmode.org/dom/events/index.html for oversigt over events.
Avatar billede w13 Novice
06. december 2008 - 19:02 #4
Har du tjekket, om fejlkonsollen i FF siger noget, når onchangen ikke kører?
Avatar billede olebole Juniormester
06. december 2008 - 21:13 #5
<ole>

Undgå så vidt mulig w3schools.com og html.dk, som begge er herostratisk berømt for seriøse fejl, misforståelser og udeladelser. Dér lærer man ikke at kode web!

Der kan være rigtig mange forskellige årsager, og det er næsten umuligt at give en samlet oversigt over browserforskelle på markup, CSS, DOM og script. Erfaring er det bedste værktøj i dén sammenhæng - parret med en stor og dyb viden om teknologierne/teknikkerne.

Prøv at vise, hvad det er, der går galt - så kan vi sikkert finde fejlen. Men der er jo ingen, der siger, din kode ikke er fyldt med fejl, bare fordi markupkoden validerer og virker i én browser  =)

Derudover er en valid kode ikke nødvendigvis en god kode ... men en god kode er altid valid  ;o)

/mvh
</bole>
Avatar billede mmmtm Nybegynder
06. december 2008 - 22:36 #6
<olebole> - afholder du kurser ?
Avatar billede olebole Juniormester
06. december 2008 - 22:58 #7
Jeg har i tidens løb undervist flere steder, men gør det ikke i øjeblikket
Avatar billede mmmtm Nybegynder
07. december 2008 - 11:35 #8
Ærgeligt !. Nåh, men koden er som nedenstående. Begge funktioner bliver kaldt, men i firefox virker det somom field ikke bliver sat.

function openAttachment(docID) {
var field = document.getElementById(docID);

  var Parm = '';
  var Titel = getChoice(field);
  if (Titel != 'Vælg bilag') {   

      field.options[0].selected = true;
    var URL = "/site/bilagsView/"+docID +  '/$file/'+Titel+'?OpenElement';
    s=window.open(URL ,'Bilag')
   
   
    }
}
function getChoice(field) {

  for (var i = 0; i < field.length; i++) {

    if (field.options[i].selected == true) {
 
        return field.options[i].text       
    }
  }

  return null
}
Avatar billede roenving Novice
07. december 2008 - 11:52 #9
Hvor(når) bliver field ikke sat ?-)

I øvrigt ser det umiddelbart ud til, at du kan gøre det en del kortere:

function openAttachment(docID){
  var field = document.getElementById(docID);
  if (field.selectedIndex != 0){
      var URL = "/site/bilagsView/" + docID +  '/$file/' + field.options[field.selectedIndex].text + '?OpenElement';
      field.selectedIndex = 0;
      s = window.open(URL ,'Bilag');
      s.focus();
  }
}
Avatar billede mmmtm Nybegynder
07. december 2008 - 14:49 #10
Roenving - takker for den forkortede kode. Field blev ikke sat da det viste sig at jeg brugte <select name= istedet for <select id=, derfra jeg kaldte funktionen. Smid et svar :-)
Avatar billede olebole Juniormester
07. december 2008 - 18:41 #11
- og i din situation ville en fortegnelse over browserforskelle være ganske overflødig. I denne situation handler det derimod om at kode i overensstemmelse med gældende standarder ... og ikke mindst sund logik  ;o)

At et element skal have sat en ID, før det kan kaldes med getElementById, er vel ikke så underligt  =)
Avatar billede mmmtm Nybegynder
07. december 2008 - 21:11 #12
Olebole: Den var ikke helt fair. Jeg har kun skullet kode i js til IE indtil nu, og IE accepterer name som id. Det er jo lige præcis en sådan forskel jeg har brug for at vide og efterspørger. Jeg forstår iøvrigt ikke hvorfor min kode validerer på validator.w3.org, - er en sådan validering ikke et ok på at gældende standarder er overholdt ? Eller er jeg helt galt på den ?
Avatar billede w13 Novice
07. december 2008 - 21:31 #13
W3 validerer ikke JavaScript, så det er grunden. Og selvom du måske synes, Oleboles svar ikke var helt fair, så var det ikke desto mindre et rigtig godt råd i forhold til den måde, du hidtil har kodet, da det kunne overflødiggøre spørgsmål herinde helt. Hvilket vel må være at foretrække. :)
Avatar billede olebole Juniormester
07. december 2008 - 21:31 #14
Ja, validatoren validerer udelukkende din markup (html) kode - ikke din CSS, DOM eller script kode.

Jeg finder det nu ganske logisk, at:
*) getElementsByTagName adresserer gennem elementernes tagName
*) getElementsByName adresserer gennem elementernes name
*) getElementById adresserer gennem elementets id

- og uanset, om man kun skal kode til én browser, er der masser af gode grunde til at overholde gældende standarder

Jeg bruger selv W3C, Mozillas JavaScript og Gecko-DOM referencer, MS' JScript reference og et hav af andre sider hos MS og Moz - men jeg kender ingen sammenlignende sider, hvor det er muligt at få et godt overblik.

Hårdt arbejde med at læse hos de ovennævnte og at kode med test i alle gængse browsere er vejen frem ... og den er lang  ;o)
Avatar billede roenving Novice
10. december 2008 - 16:47 #15
Velbekomme '-)
Avatar billede roenving Novice
15. december 2008 - 17:41 #16
-- og 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