[js/dHTML] script op 'background' uitvoeren

Pagina: 1
Acties:

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ik heb een soort scriptje gemaakt, welke het autoaanvullen van windows simuleerd met gegevens uit een database. Alleen als deze database een beetje formaat heeft, is het logisch dat het een paar seconden duurt voordat die resultaten beschikbaar zijn. In de tijd dat die gegevens geladen worden, kan de gebruiker op de pagina niets doen (de pagina hangt als het ware). Dat komt natuurlijk omdat de pagina bezig is met het laden van de gegevens.

Nu is mijn vraag, is er ook een manier om tijdens het uitvoeren van een javascript, gewoon door te werken ? Nu is het namelijk zo, dat als het javascriptje uit wordt gevoerd, de gebruiker niet verder kan typen :? Wat ik bedoel, heeft iets weg van de adresbalk (in bijv. IE).. waar je url soms ook automatisch aan wordt gevult, maar je ondertussen wel gewoon door kan typen!

Iemand ideetjes ?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:36

crisp

Devver

Pixelated

Met timeouts werken...

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Óh ja.. had ik op zich ook wel kunnen bedenken..

Dus bijv iedere seconden checken of het bestand ingeladen is lijkt me dan (:?)

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:36

crisp

Devver

Pixelated

r0bert schreef op 22 November 2002 @ 11:32:
Óh ja.. had ik op zich ook wel kunnen bedenken..

Dus bijv iedere seconden checken of het bestand ingeladen is lijkt me dan (:?)
Nou nee, meer zoiets als: 10 records laden, even een timeout, volgende 10 laden.
Zolang een script draait 'bevriest' je pagina; door af en toe even een timeout te geven kan je pagina weer events verwerken.
Zie de GoT Tracker; het parsen van de XML die ik per record met na elk record een kleine timeout.

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ik ben nou aan het proberen om via een readyState icm een setTimeout de pagina draaiende te houden.. dus dit idee:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var obj;

function fnLoadData()
{
      obj.load(gegevens);
}

function fnVerwerkData()
{
     if (obj.readyState >= 4)
     {
         alert(obj.data);
     } else setTimeout('fnVerwerkData()', 1000);
}

Werkt toppie! Maar nu wil ik graag een paar gegevens meesturen in de functie.. dus zoiets
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var obj;

function fnLoadData(objTarget)
{
      obj.load(gegevens);
      fnVerwerkData(objTarget);
}

function fnVerwerkData(objTarget)
{
     if (obj.readyState >= 4)
     {
         objTarget.innerHTML = obj.data
                 // hier kom ik dus niet uit
     } else setTimeout('fnVerwerkData(\'' + objTarget + '\')', 1000);
}

Hoe kan ik nou objTarget ook meeparsen in de funtie binnen de setTimeout :?

edit:
Via de search vond ik dat ik het als de eval() functie moest behandelen, maar dat lijkt niet te werken :'(

[ Voor 15% gewijzigd door r0bert op 22-11-2002 12:04 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:36

crisp

Devver

Pixelated

2 oplossingen:
1) je objectTarget ook in een global stoppen
2) geen object als parameter sturen, maar een textuele reference (bijvoorbeeld een ID). Je kan inderdaad in een timeout geen object als parameter meegeven.

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ok.. en als ik objTarget als string wil meesturen ? (strTarget wordt het dan)

zou dit moeten werken :?:
JavaScript:
15
setTimeout('fnVerwerkData(\'' + strTarget + '\')', 1000);

want dat wil namelijk niet :S

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:36

crisp

Devver

Pixelated

Zou moeten werken:
JavaScript:
1
2
var blaat = 'Moeh!';
setTimeout('alert(\'' + blaat + '\')', 1000);

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Hmm.. het is een combinatie geworden van

var objTarget; (global dus)

en het meeparsen (fnVerwerkData(objTarget)) van objTarget van fnLoadData naar fnVerwerkData.. verder niet meer in de timeOut... maarja, het werkt, ook al is het allemaal nogal vaag :)
Pagina: 1