[DHTML] Cross-browser

Pagina: 1
Acties:

  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Ik heb gezien dat dit onderwerp al een paar keer aan bod is geweest, maar toch krijg ik het niet werkend met die info.

hier, staat het javascript. In IE werkt het in principe, behalve dan dat ik nu een error krijg ergens.

Maar in netscape 6, en waarschijnlijk ook andere versies van netscape en opera werkt het niet...

De bedoeling is dat er een loop_text komt en een screenshot.

Ik weet dat IE bijna een monopolie heeft, maar toch wil ik het graag in zoveel mogelijk browsers werkend hebben. En ik zie het echt niet meer.

Zou iemand er naar kunnen kijken?

EDIT: Shit, dit moet in /13....Sory

Ik blijf er iig vrij nuchter onder....


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

P&W -> W&G

Doet iets met Cloud (MS/IBM)


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Ik krijg in Moz de error dat 'anima' niet gevonden kan worden.
Ik heb sterk het vermoeden dat dat komt omdat alle scripting in diezelfde 'anima' div zit. Het lijkt me sowieso niet verstandig om al je coding in dezelfde div te zetten als degene die je wilt gaan manipuleren.
Herschrijf het boeltje eens, en stop de scriptjes in je <head> sectie. Is overzichtelijker, en lost waarschijnlijk je probleem op.

Intentionally left blank


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Het probleem zit em daar niet. Ik heb het wel even geprobeerd, maar geen verschil. Als je goed kijkt zie je ook dat de <div> voor <script> alweer wordt gesloten.

Ik blijf er iig vrij nuchter onder....


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Niemand die al eens eerder zoiets heeft gedaan?

Ik blijf er iig vrij nuchter onder....


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Ik heb 'm even door de validator heengehaald; lijkt erop dat er nog wat foutjes inzitten. Ben nog even aan het kijken...

Intentionally left blank


  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 10-09 16:41

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

'null' is geen of leeg object

edit: validator van homesite:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
10  The tag: "table" doesn't have an attribute: "background" in currently active versions.  
10  The tag: "table" doesn't have an attribute: "height" in currently active versions.  
13  The value 'TITEL' is not valid for the "id" attribute in HTML4. The value is valid if double quoted.  
13  'TITEL' is not a valid value for the "id" attribute in any of the currently active versions. See the above warnings for more details.  
19  The value 'ANIMA' is not valid for the "id" attribute in HTML4. The value is valid if double quoted.  
19  'ANIMA' is not a valid value for the "id" attribute in any of the currently active versions. See the above warnings for more details.  
21  In HTML 4.0, FONT is deprecated. It may become obsolete in future versions, consider using style sheets instead.  
182  In HTML 4.0, FONT is deprecated. It may become obsolete in future versions, consider using style sheets instead.  
182  In HTML 4.0, FONT is deprecated. It may become obsolete in future versions, consider using style sheets instead.  
188  In HTML 4.0, FONT is deprecated. It may become obsolete in future versions, consider using style sheets instead.  
193  In HTML 4.0, FONT is deprecated. It may become obsolete in future versions, consider using style sheets instead.  
198  In HTML 4.0, FONT is deprecated. It may become obsolete in future versions, consider using style sheets instead.  
203  In HTML 4.0, FONT is deprecated. It may become obsolete in future versions, consider using style sheets instead.

ik doe vandaag niet maar aan de-layoutverneuking

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Wat aanvullingen:
code:
1
screenshot.innerHTML= link[index] + "[img]'"[/img]</a><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'><br><center>Klik op de screenshot om de site te bezoeken</font></center>";

Hier moet eea escaped gaan worden.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function call_It()
    {
     with(check)
       {

         //if(j=-1){spellit(anima.innerText + word[j]);}
          if(j <= word.length - 1)
           {

              spellit(anima.innerText + " " + word[j]);

           }

        }
     }

anima.innerText gaat hier alleen werken in het document.all model. Beter is om animablock te gebruiken, en de with(check) weg te laten. Echter geeft Moz in eerste instantie voor animaclock.innerText undefined aan.

Verder wordt de div screenshotblock pas na het script gedefinieerd (vandaar mijn opmerking om dit soort scripts toch maar in de <head> te stoppen - voorkomt vaak veel ellende).
En een laatste tip: gebruik binnen script single quotes, en in HTML doublequotes. Nu wordt alles zo'n beetje door elkaar gebruikt wat ook kan leiden tot errors. IE is vaak wat vergevingsgezinder vergeleken met Moz/NS.

Na een uurtje stoeien heb ik het in deze vorm niet aan de praat kunnen krijgen. Ik ben bang, wil je het echt crossbrowser maken (opera moet je maar uit je hoofd zetten, want die ondersteund innerHTML niet eens), dat een redesign wenselijk is. Bouw het gewoon van scratch af aan weer rustig op, en kijk wat er gebeurd in NS of Mozilla. De JS errorreporting van die browsers is trouwens stukken beter dan die van IE.

Intentionally left blank


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Crisp, bedankt voor de informatie, ik ga kijken of ik het aan de praat kan krijgen.

Ik blijf er iig vrij nuchter onder....


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
Goed, ik ben nu een heel eind verder. Het werkt nu ook in bijna helemaal NS6.

Ik heb nog niet kunnen testen in IE4+, dus als iemand at kan...

Het enige probleem waar ik tegenaan loop is dat mijn typewriter effect in netscape slechts tot 130 caracters wil doorgaan! Terwijl sommige tekstjes veel langer zijn.
Ik denk zelf dat het aan de manier van declareren van de <div> ligt, maar ik kom er niet uit.

Verder heb ik een functie: getFromLayer gemaakt, die de inhoud van een layer kan opvragen. Alleen weet ik niet hoe ik in NS4 de inhoud kan opvragen....

de source kan je hier vinden.

Ik blijf er iig vrij nuchter onder....


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Mozilla klaagt over een unterminated string literal. Ik heb het vermoeden dat er gewoon een grens is wat betreft het aantal karakters in een parameter...

[edit]
Blijkbaar is er inderdaad een beperking. Niet in de lengte van de parameters, maar in de lengte van het eerste argument van een setTimeout :(

Als ik echter de string als global definieer gaat alles wel goed:
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
var string;

function spellit()
    {

         if(i <= string.length)
          {

            if(i < string.length)
            {
              i++;
              schrijflayer('anima', string.substring(0,i));
              setTimeout('spellit()', 20);
            }
            else
            {
              schrijflayer('anima', string.substring(0,i));
              j++;
              call_It();
            }
           }
    };


function call_It()
    {

          if(j < word.length)
           {
              string = getFromLayer('anima') + ' ' + word[j];
              spellit();
           }
     };

Intentionally left blank


  • maartenvdv737
  • Registratie: Augustus 2000
  • Laatst online: 17-08 15:34
hmm, erg raar...

IIG bedankt, want het werkt nu prima in NS6 en IE6 en mozilla 0.99!

zal binnenkort ook testen met oudere browsers.

Ik blijf er iig vrij nuchter onder....


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Ik heb de code aardig uit kunnen dunnen. Met de invoering van de global om de geschreven string in vast te houden is eigenlijk ook de noodzaak om de innerHTML van de layer uit te lezen komen te vervallen.
Dit is de code die ik ervan gebakken heb (pas op: lay-out vern**kend ;) ):
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<script language="JavaScript">

// browser detect

var dom = (document.getElementById)? true:false;
var ie4 = (document.all && !dom)? true:false;
var ns = (document.layers)? true:false;

// the arrays

var shot = new Array();
shot[0] = "scooterz.jpg";
shot[1] = "ppc.jpg";
shot[2] = "shiatsu.jpg";
shot[3] = "astrid.jpg";

var link = new Array();
link[0] = "<a href='http://tcw2.ppsw.rug.nl/~mjvdveen/scooterzdummy/' target='_blank'>";
link[1] = "<a href='#'>";
link[2] = "<a href='http://shiatsupraktijk.cjb.net/' target='_blank'>";
link[3] = "<a href='http://tcw2.ppsw.rug.nl/~mjvdveen/astrid/' target='_blank'>";

var titel = new Array();
titel[0] = "scooterz.nl";
titel[1] = "Pedagogische Praktijk Campstede";
titel[2] = "Shiatsu-praktijk";
titel[3] = "Astrid van der Veen";
titel[10] = "Maak uw keuze";

var text = new Array();
text[0] = "Scooterz.nl behoorde 2 jaar lang tot één van de grotere scootersites van Nederland. Met een layout die door de bezoekers als 'zeer goed' werd bestempeld en een goede interactie tussen gebruikers en beheerders was Scooterz.nl een succesvolle site voor jonge scooterliefhebbers.";
text[1] = "Dit wordt de website van Pedagogische Praktijk Campstede. Aan deze website wordt momenteel gewerkt";
text[2] = "Op deze website van Shiatsu-praktijk Hengelo is gekozen voor een rustgevende uitstraling. De standaard scrollbalk, die op deze website zou 'vloeken' met het ontwerp, is vervangen door twee subtiele pijltjes rechtsonderin.";
text[3] = "De website van het zangtalent Astrid is uitgevoerd in duistere kleuren die goed passen bij de stijl van de muziek. Een forum én een gastenboek zijn speciaal voor deze website ontwikkeld en zorgen voor optimale interactie tussen bezoekers en artiest.";
text[10] = "In het menu aan de rechterkant kunt u een keuze maken uit ons portfolio."

// some globals

var i;
var j;
var string;

function schrijflayer(id, text) {

  if (ns) {
    document.layers('Layer1').document.layers(id).document.open();
    document.layers('Layer1').document.layers(id).document.writeln(text);
    document.layers('Layer1').document.layers(id).document.close();
  } else if (ie4){
    document.all[id].style.innerHTML = text;
  } else if (dom) {
    document.getElementById(id).innerHTML = text;
  }

}

function changeShot(index) {

  schrijflayer('screenshot', link[index] + "[img]'"[/img]</a><font color='#FFFFFF' size='1' face='Verdana, Arial, Helvetica, sans-serif'><br><center>Klik op de screenshot om de site te bezoeken</font></center>") ;

}

function start_up(idx) {

   i = 0;
   j = 0;

   word = text[idx].split(' ');
   string = word[0];

   schrijflayer('titel', titel[idx]);
   spellit();

}


function spellit() {

  if (i++ < string.length) {
    schrijflayer('anima', string.substring(0,i));
    setTimeout('spellit()', 50);
  } else if (j++ < word.length-1) {
    string += ' ' + word[j];
    setTimeout('spellit()', 50);
  }

}

</script>

De code is dusdanig sneller dat de timeout naar 50ms kon.
Wat heb ik veranderd?
Ten eerste het browser detect script behoorlijk vereenvoudigd en global gemaakt
Alle instellings variabelen ook global gemaakt (komt vaak goed van pas later).
de array title hernoemd naar titel (voor Mozilla blijkt title als global reserved te zijn)
Alle functies die maar 1 regel code hadden verwijderd - 1 regel code vind ik niet voldoende om er een functie van te maken.

Nog 1 dingetje: binnen event-handlers hoef je geen javascript: voor de functie te zetten. Dit:
code:
1
onLoad="start_up(10)"

is dus voldoende.

Ik heb dit getest met IE5.5 IE6, Mozilla 0.9.8, Netscape 6.1 en Netscape 4.78. Mij bevindingen:

IE - geen probleem
Mozilla 0.9.8 - alleen de titel wordt niet bold (probleempje misschien in de CSS?)
NS6.1: het vlak voor de titel en tekst wordt te klein weergegeven. De letters daarentegen te groot. Is denk ik met een uitbreiding van de CSS wel op te lossen.
NS4.78: zelfde als bij NS6.1, alleen schrijft het JS niks weg. Waarschijnlijk door de combinatie van geneste layers, en layers in een tabel. Daar houd NS4 niet zo van. Ik heb een poging gedaan het op te lossen, maar is tot nog toe niet gelukt...

Hopelijk kom je hiermee weer wat verder..

Intentionally left blank

Pagina: 1