[JS] onBlur niet crossbrowser?

Pagina: 1
Acties:

  • Dries Arnolds
  • Registratie: Mei 2000
  • Laatst online: 03-09 17:20

Dries Arnolds

*bling bling*

Topicstarter
Ik heb een scriptje gemaakt dat onBlur gebruikt, maar het werkt eigenlijk alleen in Mozilla en Netscape 6. In Opera, Netscape 4 en IE 6 gebeurt er niks. Is dit een bekend probleem? of is hier omheen te werken?

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

Euhm, voorzover ik weet ondersteunt IE vanaf versie 4 ook het onBlur-event. Heb het zelf ook een keer gebruikt voor een formuliertje:
code:
1
2
3
<input type="text" class="invoer" 
  onFocus="changeClass(this, 'invoer2')" 
  onBlur ="changeClass(this, 'invoer')">

Werkt perfect. Wellicht dat je onBlur loslaat op een 'fout' object ofzo.. post eens wat code, wellicht dat we daar meer wijs uit kunnen worden..

  • Dries Arnolds
  • Registratie: Mei 2000
  • Laatst online: 03-09 17:20

Dries Arnolds

*bling bling*

Topicstarter
www.pixelchaos.nl

en dan dus die popups bovenin.
code:
1
2
3
4
5
6
7
8
9
<!-- Begin
    function win1() {
    msg=window.open("","msg1","width=400,height=300,left=50,top=50");
    msg.document.write("<html><title>foto 1</title>");
    msg.document.write("<body bgcolor='#777777' leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 onClick=window.close() onBlur=window.close()>");
    msg.document.write("[img]'pics/foto1.jpg'[/img]");
    msg.document.write("</body></html>");
    }
// End -->

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 23:47

Pelle

🚴‍♂️

* Pelle denkt dat dit raar is

Als ik een bestaande file open:
code:
1
window.open("test.html", "naampjuh", "");

Met daarin:
code:
1
<body onBlur="window.close();">

Dan werkt dat perfect. Maar zodra ik naar dat window ga schrijven met document.write() in plaats van direct een file te openen, gaat het fout.
Het rare is overigens dat de onClick wel werkt.

In ieder geval even een paar tipjes:
* Zet alles tussen dubbele quotes:
code:
1
2
3
4
5
<body onBlur="window.close();">

<!-- in plaats van -->

<body onBlur=window.close()>

* Het mooie van functies is dat je ze kunt hergebruiken. Jij gebruikt nu 4 keer dezelfde functie, maar dan met een andere foto erin. Is niet nodig :)
code:
1
2
3
4
5
6
7
8
9
function win(foto, titel) {
    msg =  window.open("","msg1","width=400,height=300,left=50,top=50");
    msg.document.write('<html><title>' + titel + '</title>');
    msg.document.write('<body bgcolor="#777777" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" onBlur="window.close();">');
    msg.document.write('[img]"pics/'[/img]');
    msg.document.write('</body></html>'); 
}

win("blaat.jpg", "blaat");

Ik kan me zo 1-2-3 niet bedenken waar het aan ligt dat de onBlur() niet werkt als je 'm met document.write hebt geschreven; daarom zou ik lekker een template-file maken waarin je steeds de juiste foto inlaadt door er een parameter aan mee te geven en die met location.search uit te lezen. Zie voor de werking daarvan:
[topic=348633/1/25] of
[topic=311642/1/25] bijvoorbeeld.

Raar probleem in ieder geval; hiermee lossen we het niet op, maar werken we er wel mooi omheen iig :)

  • Dries Arnolds
  • Registratie: Mei 2000
  • Laatst online: 03-09 17:20

Dries Arnolds

*bling bling*

Topicstarter
Thanks voor het uitgebreide antwoord. Dat van die dubbele functies wist ik inderdaad wel, maar dat komt bij de optimize fase kijken :)

Wel raar trouwens dat het zo omslachtig moet. En nog raarder dat het in Mozilla wel werkt. Naja, nog een pluspunt voor Mozilla :P