[xmlhttp] interactive mode

Pagina: 1
Acties:

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 11:05

voodooless

Sound is no voodoo!

Topicstarter
De situatie: Ik wil de browser UI vanuit de server live updaten. Hier wil ik events naar browser streamen. Ik wil daarvoor gebruik maken van de interactive mode (readyState==3) van het XMLhttp object. Volgens de theorie zou iedere keer als er nieuwe data is, een event moeten plaatsvinden met readyState op 3, zodat je de alvast binnengekomen responsetekst kunt gebruiken.

In Firefox werkt dit perfect: iedere keer als ik op de server een flush geef, komt er netjes een event bij de browser binnen en kan ik de nieuwe data uitlezen. IE en Opera denken daar echter heel anders over:

- Opera: roept readyState==3 een keer aan, daarna komen er geen events meer
- IE: roept readyState==3 een keer aan, en als je dan de response tekst wil lezen krijg je een error: The data necessary to complete this operation is not yet available daarna komen er geen events meer binnen.

Code van het event:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   var index = 0;

   function onlinereponse(){
      alert(xmlhttp.readyState);
      if (xmlhttp.readyState==3) {
         var wholecommand = xmlhttp.responseText;
         var newtext = wholecommand.substring(index,wholecommand.length);
         index = wholecommand.length;
         if(newtext.length>0){
            alert(newtext);
            eval(newtext);
         }
      } else if (xmlhttp.readyState==4) {
         alert("stream ended");
      }
   }


De vraag is nu: waar vind ik een voorbeeld van iets dergelijks dat wel crossbrowser werkt? Helaas staat er ook ook nergens duidelijk beschreven wat die interactive state nu precies zou moeten doen, of hoe deze gebruikt zou moeten worden. Ik heb al vanalles afgezocht, maar nog niets zinnigs kunnen vinden -O- Het zou toch echt zonde zijn als ik nu weer moest gaan pollen op events...

Do diamonds shine on the dark side of the moon :?


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

zoek even op COMET, dit werkt met een iframe en <script> tags voor serverside push :) (GMAIL gebruikt dit o.a.)

[ Voor 13% gewijzigd door SchizoDuckie op 15-02-2007 13:39 ]

Stop uploading passwords to Github!


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 11:05

voodooless

Sound is no voodoo!

Topicstarter
Super bedankt, het werkt zo perfect, en ook nog eens met een berg minder code :)

* voodooless is blij :D

Do diamonds shine on the dark side of the moon :?


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

:* you're welcome :)

Stop uploading passwords to Github!


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 14:09

crisp

Devver

Pixelated

Punt met XMLHttp is dat er nog geen standaard voor is en de meeste implementaties puur reverse-engineering werk is. Dat verklaart uiteraard wel dat browsers op bepaalde punten ander gedrag kunnen vertonen ;)

Intentionally left blank