Avatar billede lone_a_p Praktikant
21. juli 2007 - 01:20 Der er 12 kommentarer og
1 løsning

onBlur og onFocus

Virker onBlur og onFocus i alle browsere?

Både IE, Netscape, Opera, Safari ... osv?

Måske et dumt spørgsmål: men har det noget med javascript at gøre? når jeg søger efter det her på eksperten får jeg hele tiden spørgsmål vist i kategorien (D)HTML ... jeg troede egentlig at onBlur og onFocus var javascript-koder?

Mvh Lone
Avatar billede windcape Praktikant
21. juli 2007 - 01:59 #1
onBlur og onFocus er eventhandlers i et DOM Dokument.

Disse eventhandlers kan så trigger forskellige DOM methoder, eller Javascript (ECMAScript) defineret methoder (functions).

Og ja, det er min erfaring at onBlur og onFocus findes i alle browsere, dog kan IE godt opfører sig lidt anderledes nogle gange, den er sådan lidt random ;-)

Kategorien DHTML er korrekt nok, Javascript havde været ligeså korrekt, dog er JS kategorien mere målrettet direkte sprogspørgsmål, hvor DHTML er mere relateret til DOM orienterede problemstillinger som denne.
Avatar billede windcape Praktikant
21. juli 2007 - 02:00 #2
Og så skal de siges at de kan sættes som attributter, eller som callbacks, eller som closures :-)

<element id="myelement" onBlur="foo()">

function myCallBack() {
  alert(this.id);
}

var element = document.getElementById('myelement');
element.onblur = myCallBack;

eller

var element = document.getElementById('myelement');
element.onblur = function() {
    alert(element.id);
};
Avatar billede roenving Novice
21. juli 2007 - 04:58 #3
-- og endnu et hjørne, egentlig bør events sættes som eventhandlers, når de ikke defineres som attributter, med

addEventListener("blur", myFunction, true) i browsere, der brugere w3cs definition af events og

attachEvent("onblur", myFunction) i IE !-)

-- og så er det helt klart ovre i javascript ...
Avatar billede lone_a_p Praktikant
21. juli 2007 - 14:05 #4
er det bedre at lave det som eventhandlers end som attributter?

jeg har problemer med <element id="myelement" onBlur="foo()" onFocus="foo2()">
i Safari.
Avatar billede windcape Praktikant
21. juli 2007 - 18:26 #5
Der er ingen reel forskel. Hvilket problemer har du da ?
Avatar billede olebole Juniormester
21. juli 2007 - 22:24 #6
<ole>

windscape >> Det er ikke en closure, men blot en anonym funktion. Dette er en closure:

function bla() {
    var element = document.getElementById('myelement');
    element.attachEvent("onclick", foo);
   
    fumction foo() {
        alert("I'm foo")
    }
}

- og dem kløjs IE's garbage-collection voldsomt slemt i  :o|

"er det bedre at lave det som eventhandlers end som attributter?" >> Du bør skrive event-handlers med lowercase ... ikke CamelCase. Kan du sætte de samme handlers med DOM/script i Safari?

/mvh
</bole>
Avatar billede windcape Praktikant
22. juli 2007 - 00:16 #7
eeh, ja.. jeg roder rundt i closures og anonyme funktioner :)

sorry bout that chaps
Avatar billede lone_a_p Praktikant
22. juli 2007 - 13:59 #8
olebole> puha, du taler et sprog jeg ikke helt kan forstå ... men jeg vil gerne :)

IE's garbage-collection: det må betyde at jeg ikke skal bruge den funktion du har lavet

event-handlers med lowercase? går ud fra at det er "eventhandlerne" onblur og onfocus i stedet for onBlur og onFocus ... vil det så også virke i safari?

Kan du sætte de samme handlers med DOM/script i Safari?: onBlur og onFocus virker åbenbart ikke i safari ... tror det var det du ville vide? ... og netop dette var mit store problem

Men jeg er kommet om ved det med et browsertjeck, hvor safari så virker anderledes end alle andre browsere.

Mvh Lone
Avatar billede olebole Juniormester
22. juli 2007 - 15:22 #9
Glem at om garbage-collection i forhold til dit spm. Det var udelukkende en kommentar til windscape vedr. vores lille afledte 'sidedebat' om closures.

Event-handlers bør skrives i lowercase (onfocus, onblur, onmouseover, etc), men det løser vist desværre ikke problemerne med Safari. Jeg sidder desværre ikke med én i øjeblikket, men lidt googleri viser, du langtfra er alene med problemet  :o|

En alternativ løsning er under alle omstændigheder nødvendig, men jeg kan som sagt ikke lige teste mig frem til én. På den anden side ser det jo ud til, du selv har løst det, så deeeeeeeeet .........  ;o)
Avatar billede lone_a_p Praktikant
22. juli 2007 - 15:30 #10
jep, jeg har selv løst det :)

men hvad stadig står med et spørgsmålstegn for mig er: hvorfor skal event-handlers skrives i lowercase

... det ser ud til ellers at virke, så hvorfor? :)
Avatar billede roenving Novice
25. juli 2007 - 18:01 #11
-- siden 1998, hvor html4 kom, har det faktisk været anbefalingen, at man skrev alle attributter i html-tags med små bogstaver, fra xhtml er det direkte ugyldig kode, at bruge andet end små bogstaver !-)
Avatar billede lone_a_p Praktikant
26. juli 2007 - 00:04 #12
ok, det KAN jo være, at det kommer til at virker i safari også så ;)

Vil I ikke bare alle 3 give et svar, for I har jo alle bidraget :)

Og tak for det ;)
Avatar billede lone_a_p Praktikant
14. oktober 2008 - 14:14 #13
Ingen svar? Nu lukker jeg - men tak!
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