[JavaScript] Event bij de blur van een frame als geheel.

Pagina: 1
Acties:

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Hallo!

Ben al weer flink wat uurtjes bezig met het volgende probleem:

Ik wil graag een event, dat 'ontstoken' wordt, op het moment dat een gebruiker de focus uit een frame verwijderd. Het kan dus zijn, dat hij op een ander frame op dezelfde pagina klikt, maar het kan ook zijn, dat hij in de adres-balk bovenin klikt, of zelfs een heel ander programma aanklikt.

Ik wil echter NIET, dat het event wordt aangeroepen, wanneer de focus BINNEN de frame wordt verplaatst.

En dan moet het ook nog voor IE en Gecko werken (*zucht*).

Iemand die mij wellicht kan helpen?

Alvast enorm bedankt!

EDIT: Ik ben er innmiddels achter, dat het onBlur event for IE wel gewoon werkt. Nu zou ik alleen zo graag nog een equivalent hebben voor Mozilla ... iemand een idee?

[ Voor 27% gewijzigd door gvanh op 21-09-2004 18:50 . Reden: Kleine update. ]


  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

Het equivalent van onblur in Mozilla is onblur :)

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
:+

Dat weet ik!

Helaas werkt 'frame.onBlur()' niet in Gecko/Mozilla. Ik zou dus op een of andere manier een work-around moeten gebruiken met de aanwezige Mozilla events ... alleen ik weet niet hoe! Ik heb al veel geprobeerd, maar niets geeft het gewenste effect.

Onderstaande komt nog het meest in de buurt, maar geeft ook een event op het moment dat binnen het frame een willekeurig element 'blurred'. Da's dan weer niet de bedoeling!

code:
1
document.getElementById('frameId').contentDocument.addEventListener('doIt')

  • KillR-B
  • Registratie: Mei 2002
  • Laatst online: 20-01 20:49
Stel dat het object "doc" het document is van je frame, dan moet dit werken onder Mozilla:
JavaScript:
1
doc.addEventListener("blur", function() {alert("doe hier iets");}, true);

  • André
  • Registratie: Maart 2002
  • Laatst online: 18-05 16:30

André

Analytics dude

En de onblur op je body zetten werkt ook niet?

  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
@KillR-B:

Ja, dat is inderdaad wat ik in mijn Post ook al had gezet. Dat werkt tot op zekere hoogte. Het probleem is dan, dat niet alleen de event-handler wordt aangeroepen als het frame-als-geheel de focus verliest, maar ook als een willekeurig element BINNEN het frame de focus verliest. Dus als ik van het ene element BINNEN het frame naar het andere element BINNEN het frame klik, dan wordt ook de event handler aangeroepen.

@André:
De onBlur op de body van hetzelfde document zetten, geeft overigens exact hetzelfde effect.

[ Voor 11% gewijzigd door gvanh op 22-09-2004 09:56 ]


Verwijderd

en zo dan:
code:
1
parent.frameName.onBlur=doIt();

Verwijderd

Heb nu iets wat lijkt te werken in Mozilla:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Event registration</title>
<style type="text/css">
body, html {
    height:100%;
    margin:0;
    padding:0;
}
iframe#midden {
    position:absolute;
    left:50%;
    margin-left: -200px; 
    margin-right: auto;
    width:400px;
    height:400px;
    border:thin #000 solid;
    overflow:hidden;
}
</style>
<script type="text/javascript">
function init() {
        document.getElementById("midden").contentDocument.addEventListener("blur", 
doIt, false)
} 
function doIt() {
    alert("doe het")
}
window.onload=init;
</script>
</head>

<body>
<iframe src="foo.htm" id="midden"></iframe>
<a href="#">test</a></body>
</html>

[ Voor 18% gewijzigd door Verwijderd op 22-09-2004 12:47 ]


  • gvanh
  • Registratie: April 2003
  • Laatst online: 02-12-2023

gvanh

Webdeveloper

Topicstarter
Dank voor je proberen. Ook dit gaat echter niet helemaal zoals ik graag zou willen. Jouw voorbeeld heb ik toegepast en kun je hier bekijken: http://cms.thirdwave.nl/blur.php .

Je ziet, dat als je in hetzelfde frame eerste de ene link aanklikt, en daarna in hetzelfde frame de andere link, dat je ook de pop-up krijgt. Overigens krijg je de pop-up diverse keren, een fout die ik ook al was tegen gekomen ... is dat een bug van Mozilla of heeft dat met Bubbling te maken?
Pagina: 1