[JS] continue melding 'waiting for' in status balk

Pagina: 1
Acties:

  • klokop
  • Registratie: Juli 2001
  • Laatst online: 30-03 19:56

klokop

swiekie swoeng

Topicstarter
Klein probleempje met een javascriptje. Onderstaand script doet het prima, 't maakt dynamisch mouseovers aan voor een aantal afbeeldingen, die in een element staan met als ID 'mouseovers'.

Het 'probleem' is dat er in Firefox (niet in IE) de melding 'waiting for domainnaam.nl' in de statusbalk blijft staan, als alles in de pagina al geladen is. Dit gebeurt alleen als ik de pagina met het JS er in 'refrsh', en niet als de pagina voor de eerste keer bekeken wordt. In IE blijf dat 'wainting...' niet in de statusbalk
staan.

Het is dus niet zo'n groot probleem, en miscchien wel een bug in FF, maar 'k zou de melding toch graag kwijt willen...

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
function init() {
  if (document.getElementById)
    var x = document.getElementById('mouseovers').getElementsByTagName('IMG');
  else if (document.all)
    var x = document.all['mouseovers'].all.tags('IMG');
  else return;
  var preloads = new Object();
  for (i=0; i<x.length; i++) {
    var btn_id, btn_split, btn_name, btn_state, new_btn_state;
    btn_id = x[i].id;
    btn_split= btn_id.split('_');
    btn_name = btn_split[0]+'_';
    btn_state = btn_split[1];
    if (btn_state == 'off')
      new_btn_state='on';
    else if (btn_state == 'on')
      new_btn_state='off';
    preloads['n'+btn_id] = new Image;
    preloads['n'+btn_id].src = '/img/'+ btn_name + btn_state +'.gif';
    preloads['o'+btn_id] = new Image;
    preloads['o'+btn_id].src = '/img/'+ btn_name + new_btn_state +'.gif';
    x[i].onmouseover = function () {this.src=preloads['o'+this.id].src;}
    x[i].onmouseout  = function () {this.src=preloads['n'+this.id].src;}
  }
}
code:
1
2
3
4
5
6
7
8
<table>
<tr id="mouseovers">
<td><a href="">[img]"/img/button1_off.gif"[/img]</a></td>
<td><a href="">[img]"/img/button2_on.gif"[/img]</a></td>
<td><a href="">[img]"/img/button3_off.gif"[/img]</a></td>
-etc-
</tr>
</table>

"Passing silhouettes of strange illuminated mannequins"


Verwijderd

body onload="window.status='benne kloar heur'"

  • klokop
  • Registratie: Juli 2001
  • Laatst online: 30-03 19:56

klokop

swiekie swoeng

Topicstarter
Verwijderd schreef op 26 april 2004 @ 15:33:
body onload="window.status='benne kloar heur'"
Qua visueel ben je dan klaar ja...

"Passing silhouettes of strange illuminated mannequins"


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

klokop schreef op 26 april 2004 @ 15:45:
[...]

Qua visueel ben je dan klaar ja...
Hij (lees: de browser) doet daarna toch ook niks :?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • klokop
  • Registratie: Juli 2001
  • Laatst online: 30-03 19:56

klokop

swiekie swoeng

Topicstarter
nou ja, er staat in de statusbalk dat 'ie iets probeert te downloaden... dus dan heb ik liever dat 'ie daar ook echt mee stopt.
't Is net of er ergens een oneindig loopje in de JS zit, maar ik kan em niet ontdekken...

Enfin, zoals ik al zie, misschien is het idd alleen maar een statusbalk bugje in FF.

"Passing silhouettes of strange illuminated mannequins"


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:13

crisp

Devver

Pixelated

werkt die code ueberhaupt wel? Je definieert je variabele preloads niet global (en waarom maak je er een object van en geen array?); het lijkt mij dat hij buiten de scope van de init-functie dan ook undefined zal zijn en je mouseover/mouseout functies gewoon JS-errors opleveren...

Intentionally left blank


  • klokop
  • Registratie: Juli 2001
  • Laatst online: 30-03 19:56

klokop

swiekie swoeng

Topicstarter
crisp schreef op 26 april 2004 @ 22:59:
werkt die code ueberhaupt wel? Je definieert je variabele preloads niet global (en waarom maak je er een object van en geen array?); het lijkt mij dat hij buiten de scope van de init-functie dan ook undefined zal zijn en je mouseover/mouseout functies gewoon JS-errors opleveren...
Waarom zou ik het preLoads object global moeten maken? Het wordt toch alleen maar gebruikt binnen de functie init()?? En waarom geen array? Waarom wel?
De functie werkt prima overigens, zie openingspost. Nul JS errors.

"Passing silhouettes of strange illuminated mannequins"


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:13

crisp

Devver

Pixelated

klokop schreef op 27 april 2004 @ 09:25:
[...]


Waarom zou ik het preLoads object global moeten maken? Het wordt toch alleen maar gebruikt binnen de functie init()?? En waarom geen array? Waarom wel?
De functie werkt prima overigens, zie openingspost. Nul JS errors.
Ik heb je functie zelf niet getest, maar wat je in onmouseover en onmouseout doet zal zich niet afspelen binnen de scope van je init() functie, terwijl je daar wel je preloads object aanspreekt. En waarom een array ipv een object; tsja, ik vind het logischer en een array bied standaard meer functionaliteit in de vorm van methods, als je die functionaliteit nu en in de toekomst niet nodig denkt te hebben voldoet een object prima (een array is immers ook niets meer dan een speciaal type object).

Intentionally left blank


  • klokop
  • Registratie: Juli 2001
  • Laatst online: 30-03 19:56

klokop

swiekie swoeng

Topicstarter
tsja.... 'k heb een andere versie inelkaar gesleuteld:
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
40
41
42
      function init() {
        //smurf alle plaatjes:
        if (document.getElementById)
          var x = document.getElementById('mouseovers').getElementsByTagName('IMG');
        else if (document.all)
          var x = document.all['mouseovers'].all.tags('IMG');
        else return;

        var imgOriginSrc, oldsrc, newsrc;
        var imgTemp = new Array();

        //loopje door allen gevonden plaatjes
        for (i=0; i<x.length; i++) {
          //als de huidige src '_off' bevat, maak daar dan '_on' van, en vice versa
         oldsrc = x[i].getAttribute('src');
          if (oldsrc.indexOf('_on') > 0) {
            var oldstate = '_on'
            var newstate = '_off';
          } else if (oldsrc.indexOf('off.gif') > 0) {
            var oldstate = '_off';
            var newstate = '_on'
          }

          //preload onmousover plaatjes:
          imgTemp[i] = new Image();
          imgTemp[i].src = oldsrc.replace(oldstate, newstate);

          //onmouseover:
          x[i].onmouseover = function(i) {
              //huidige src:
              imgOriginSrc = this.getAttribute('src');
              //onmouseover src
              //laadt preload plaatje met juiste array id
              this.src = imgTemp[this.id.charAt(this.id.indexOf('_')-1)-1].src;

          }
          //onmouseout:
          x[i].onmouseout = function() {
              this.setAttribute('src',imgOriginSrc)
          }
        }
      }


Maar dat veranderd nix aan het probleem... :( (maar dat komt waarschijnlijk omdat ik aan de opzet niet echt iets veranderd heb....)
ach, zo oefent een mens z'n JS skillzz nog eens ....

[ Voor 10% gewijzigd door klokop op 28-04-2004 17:35 ]

"Passing silhouettes of strange illuminated mannequins"

Pagina: 1