jeg er på udkig efter navnet på den klasse der bruges når man f.eks. har reference til et element i en streng. Hvad hedder den klasse? Jeg har kigget på både Object og String klasserne, men det ser ikke ud til at være nogen af disse. Det jeg vil er følgende:
var oElm = document.getElementById('oelm'); oElm.addEvent( %trigger%, %delegatereturn%, %bubling% );
og jeg har dertil laves en crossbrowser metode for at tilføje events til et sådant element. Nu skal den så bare smides på den klasse som oElm er, men hvad hedder denne?
Det er ikke som sådan en tigængelig klasse (selvom der er visse forskelle mellem browserne). DOM er opbygget sådan, at du tildeler egenskaber til hvert enkel node/element
var oElm = document.getElementById('oelm'); addEvent( oElm, %trigger%, %delegatereturn%, %bubling% );
- eller du kan lave en OO-wrapper til elementerne og så extende denne klasse med metoden. I f.eks. Firefox og Opera kan du godt nok extende prototypen på 'HTMLElement', men den går ikke i IE:
Yeah, ole, mit draft var at extende (prototype) på Object klassen, men den var som sagt ikke den rigtige klasse, men det er HTMLElement klassen jeg skal have fat i så?
Det er lidt træls IE ikke vil spille med, da det er en pænere måde end at lave en wrapper til den slags funktioner. Nu må vi se hvad jeg kommer frem til.
Nu er det ikke altid IE, der ikke vil 'spille med' - selvom det er vældig trendy at mene sådan. Her er det faktisk MS, der holder fast i den måde, de fleste andre sprog behandler GUI-kontroller på. Nej, jeg synes ikke, det er en pænere måde.
Og så står der jo ingen steder, man skal kunne extende HTMLElement. Det er en ganske ustandardiseret opførsel ;o)
Ah, men det er stadigvæk Microsoft der skaber problemet, og faktisk så kan jeg heller ikke få det til at virke med HTMLElement klassen i hverken firefox eller opera samt epiphany.
Jeg og min nabo farver helt umotiveret håret grønt og skægget orange. Er du så pludselig problemet, fordi du ikke vil skabe dig åndsvagt og gøre det samme? =)
Det er svært at se, at Microsoft skulle være problemet, fordi de ikke følger andre fabrikanters proprietære påhit. Det er ikke let at skulle please et marked, der går fra 0 til 180 grader. They're damned if they do - and damned if they dont!
Det her funker fint i Firefox og Opera:
<script type="text/javascript"> HTMLElement.prototype.addEvent = function(sType, fn){ if (this.addEventListener) this.addEventListener(sType, fn, false); else if (this.attachEvent) this.attachEvent("on"+sType, fn); else if (typeof this["on"+sType]=="function") { var tmp = this["on"+sType]; this["on"+sType] = function(){tmp();fn()}; } else this["on"+sType] = fn; }
function foo() { alert("Du klikkede på: " + this.getAttribute("id")) }
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.