[JavaScript] Bug in IE5

Pagina: 1
Acties:

  • B-Man
  • Registratie: Februari 2000
  • Niet online
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<HTML>
<HEAD><SCRIPT language="JavaScript">
function dummy()
{
// alert('this alert provent IE4/IE5 from crashing!');
    //DivId.innerHTML = DivId.innerHTML;
    DivId.outerHTML = DivId.outerHTML;
    // (stupid, but more sophisticated in my real application!)
}
</SCRIPT></HEAD>
<BODY><FORM>
<DIV ID="DivId">
    <INPUT type=text>
    <TEXTAREA onBlur="javascript:dummy()">
    </TEXTAREA> 
</DIV>
<input type=button id=test value="bla" onClick="dummy()">
</FORM></BODY></HTML>


Probeer bovenstaande code eens in IE5. Klik eerst in het textarea, en vervolgens in het tekstveld. Hier loopt IE5 vast.

Ik loop al een tijdje tegen deze bug aan met een online HTML editor die gebruikt maakt van designMode op een IFRAME. Ik zag zojuist bovenstaande code in een niewsgroep, en het verbaast me dat deze bug zo gemakkelijk te reproduceren is.

IE 5.00.3502.1000 (W2K SP3+fixes)... Ook op IE5.5 geeft deze code problemen.

Mijn vraag is: weet iemand hoe ik deze bug kan omzeilen? De betreffende post had geen reacties...

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

P&W -> W&G

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Heb de bug nu omzeild door een IFRAME voor HTML view te gebruiken, en een textarea voor sourcecode view.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Hmm mijn IE 5.50.4807.2300 SP2 +Q323759 (:P) @ WinME heeft er geen problemen mee, behalve dat het volgende veld niet wordt gefocused, maar dat komt door je dummy functie

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

dit klopt sowieso niet:
JavaScript:
1
onBlur="javascript:dummy()"

die javascript: hoort niet in een eventhandler :)

Intentionally left blank


Verwijderd

Maar het mag wel. javascript: wordt als label gezien, en je kunt dus ook goto javascript; doen ;) Maar het heeft idd erg weinig nut.

Wat ik me kan voorstellen wat er trouwens fout gaat, is dat de eventhandler (dummy) een waarde teruggeeft aan de textarea, maar die bestaat niet meer (die heb je met die outerHTML verwijdert). Probeer anders eens bij die textarea op de onblur een setTimeout te doen, die dan op zijn beurt dummy aanroept...

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Ik snap waarom het misgaat, daar ging mijn vraag dan ook niet over. Wat ik ronduit _belachelijk_ vind is het feit dat IE hierdoor geheel crasht. "Grappig" vind ik overigens het feit dat bij het wijzigen van de innerHTML properties IE 5.0 niet _altijd_ vastloopt... Met mijn editor gebeurde dit at random (en dit heb ik aan de hand van cases getest...). Pfff. Ik heb nu in ieder geval de bug weten te omzeilen...

r0bert: dank voor je test... IE5 die ik draai gaat _altijd_ plat m.b.v. bovenstaande code. IE5.5 niet altijd, maar wel regelmatig...

Ik heb overigens getracht het probleem te omzeilen met een setTimeout, maar dit loste het probleem niet op. Het zorgde er overigens wel voor dat IE minder vaak vastliep, maar nog steeds allesbehalve acceptabel. DrWatson melde overigens (in het logbestand) in alle gevallen dat het op "eax" misging:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
functie: <nosymbols>
        70021c38 ba01000000       mov     edx,0x1
        70021c3d 8bcd             mov     ecx,ebp
        70021c3f d3e2             shl     edx,cl
        70021c41 c1e808           shr     eax,0x8
        70021c44 3bd0             cmp     edx,eax
        70021c46 7eb0             jle     7002a7f8
        70021c48 8bcb             mov     ecx,ebx
        70021c4a e82435ffff       call    70015173
        70021c4f eba7             jmp     700304f8
        70021c51 e89a870100       call    7003a3f0
Fout ->70021c56 8b4808           mov     ecx,[eax+0x8]          ds:02385f62=????????
        70021c59 80791852         cmp     byte ptr [ecx+0x18],0x52     ds:0232ec72=00
        70021c5d 0f84efc80f00     je      CreateHTMLPropertyPage+0x1189f (7011e552)
        70021c63 8b4114           mov     eax,[ecx+0x14]         ds:0232ec72=00000000
        70021c66 85c0             test    eax,eax
        70021c68 0f84e4c80f00     je      CreateHTMLPropertyPage+0x1189f (7011e552)
        70021c6e 8d4810           lea     ecx,[eax+0x10]         ds:02385f62=????????
        70021c71 e831ffffff       call    70021ba7
        70021c76 48               dec     eax
        70021c77 c3               ret
        70021c78 55               push    ebp
        70021c79 8bec             mov     ebp,esp


Tevens zag ik iedere keer NtDelayExecution terug als ik met setTimeout werkte, en iedere keer NtWaitForSingleObject en NtWaitForMultipleObjects of NtReplyWaitReceivePortEx...
Pagina: 1