Birger Sørensen wrote:
> Martin.
> Jeg startede midt i '80'erne engang, så 10 år ka' vist ikke gøre det... ;>)
> Men jeg har da gjort lidt for at følge med, og lære nyt og mere...
Der var jeg jo ikke engang født endnu :)
Jeg startede lige da den tid hvor NS4 blev slagtet ret hårdt af denne
nye Internet Explorer - Det er det tidligste jeg kan huske, så hvordan
det var før, der må jeg melde stort pas.
> Anyway...
> Jeg tror ikke at document.[form navn].... går i IE.
> Der skal enten .all eller .forms imellem.
Jeg har desværre kun IE7 på denne maskine, men der virker mit
ovenstående hurtige eksempel ganske udenmærket, så document.[form navn]
virker skam også i IE7 - Jeg tester lige imorgen hvordan IE6 opfører sig.
>
> Pointen er, at "i gamle dage" - dengang også i Netscape - og stadigvæk i IE
> og Opera - var/er elementer der blev givet et eentydigt id (name),
> automatisk variable i javascript (og JScript og ecmascript).
> Dvs. du kan bare skrive [element navn].value - der er ingen brug for at
> hente objectet fra DOM; det findes allerede.
Det er så rigtigt - det ville være nemmere med objectid.value, men når
man heller ikke gør det i fx. XSL (XML stylesheets), XPath eller lign.
XML ting, hvorfor skulle man så gøre det i XHTML, XHTML er jo en
viderebygning på XML.
Men man må jo se når HTML5 (eller hvad den nu kommer til at hedde)
bliver officielt se hvad den bringer.
> I fremskridtets hellige navn, finder jeg det et klart tilbageskridt, at
> nyere standarder begrænser/besværliggør og ikke er kompatible med tidligere
> versioner.
Nu har det ALDRIG været standard i firefox at kunne skrive objekt.value
(svjv) så den er da kompitabel med tidligere versioner.
At så w3.org har lavet en standardisering af hvordan tingene "skal"
skrives, og firefox er en af dem som overholder netop disse standarder,
er vel så bare en god ting. Tænk hvis der ikke var en dokumentation til
PHP eller ASP.net, hvordan skulle man så lave tingene.
Opera overholder så også standarden, men de har så bare medtaget nogle
af de ting som IE har lavet for dem selv, kan jo så både være godt... og
dårligt.
Godt fordi så er det lidt nemmere for udviklerne at springe over hvor
gærdet er lavest - eller hvad man nu kan sige :)
Dårligt, fordi så kan igen, udviklerne springe over gærdet er lavest og
ikke opfylde de standarder der nu engang er.
> Hvorfor skal f.eks. innerText pludselig hedde textContent (som IE i øvrigt
> ikke forstår, mens Opera forstår begge..).
Fordi det er IE der har "opfundet" innerText - w3.org har så lavet
standarden textContent.
For at emulere innerText i firefox kan følgende bruges
//Emulate innerText on Firefox
if (typeof HTMLElement != 'undefined' && typeof
HTMLElement.prototype.__defineGetter__ == 'function'){
HTMLElement.prototype.__defineGetter__("innerText", function () {
return this.textContent;
});
}
> Det ka' da' godt være at det er MS der har lanceret den, og man ikke vil
> forfordele den ene frem for den anden.
> Men innerHTML har man taget som den var. Den burde reelt så hedde
> HTMLContent. Det gør den bare ikke - den hedder stadig innerHTML.. Bare for
> at gøre forvirringen total..
> Eller hva'?
Noget i den stil :)
Jeg læste hvorfor at textContent og innerHTML hedder som de hedder et
eller andet sted på w3.org, men kan ikke hitte den side igen.
> Eller er det bare mig der er ved at blive gammel?
Det tror jeg da ikke - men engang imellem er det sku meget rart lige at
slippe ALT hvad man har lært og ellers lære det forfra
> Og sådan er der så meget.
Nemlig... og det samme "problem" var der også dengang da IE og NS var i
slåskamp om brugerne. Der synes jeg bare at kunne huske at der var LANGT
større problemer end der er idag.
> Det her er brok.
> Syntes egentlig det andet er mere forklaring af forskellene, end egentlig
> brok. :)
> Og jeg mener at forklaringen er den væsentligste del af hjælpen her...!
Forklaringen... tjaa w3.org har lavet en standard af Javascript, det IE
bruger er jo så JScript - måske bedre kendt som ECMAscript, Javascript
og ECMAscript ligner MEGET hinanden, men der er nogle små forskelle, og
det er vel dem vi støder ind i nu.
Opera har bare været så "smarte" at indbygge begge dele - mens Firefox
overholder Javascript standarden, og IE overholder JScript standarden.
Min konklusion... (skrevet af en tilhænger af standarder!)
IE
Brugte i starten deres egen standard, ECMAscript (opfundet i 1996 og
udkommet i 3 versioner, senest 1999) - Senere er de af en eller anden
grund blevet nød til at indbygge noget fra det "rigtige" javascript, som
fx. DOM modellen
Opera
Har sørget for at "gamle" sider også vil virke selvom man har brugt
noget "ældre" ECMAscript, og højst sandsynligt også implementeret det
meste af Javascript.
Firefox
Da Netscape i 1998 indgik en aftale med AOL og SUN (kan ikke lige helt
huske hvordan det var) og Firefox eller rettere Mozilla Foundation er
stiftet af Netscape, så er det jo klart at de har indbygget Javascript i
dens oprindelige standard, da Javascript jo er et trademark fra SUN - og
højst sandsynligt ikke har ville/må indbygge nogle form for ECMAscript
ind i browseren, er det jo klart der vil blive problemer med nogle ting.
Nå.. det blev vidst et lidt langt indlæg denne gang :)
Men bare rolig Birger, jeg er skam ikke imod nogle, men jeg må indrømme
de ting jeg har lavet efterhånden i javascript aldrig har været et
problem i hverken IE, Opera eller i Firefox så må jeg indrømme at jeg
kan godt lide den måde det nu virker på.
PS:
En helt anden ting... MANGE af de scripts man finder på nettet, er
efterhånden af så gammelt format at de bare ikke kan bruges mere, ofte
finder jeg nogle som stadig tjekker op om det er enten IE eller NS,
altså scripts fra omkring 1995 tiderne (AKA First Browser War)
PPS:
Så findes innerText faktisk slet ikke i ECMA standarden 3. version fra
1999 som jeg så vidt ved er den nyeste.
<
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf>
PPPS:
Så er DOM ikke en del af ECMAscript standarden, så IE har åbenbart også
indbygget lidt fra Javascript.
PPPPS:
Wikipedia er skøn :)