js laden in een body bij IE en FF

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey,

Ik zit met een probleempje. Op onze joomla-site gebruik ik een module die logo's in en uit laat faden. Nu roept deze code meerdere javascripts op. Deze staan dus in de body. Voor FF is dit geen probleem, maar bij IE gaf hij een fout dat de pagina niet verder geladen kon worden. Dus heb ik wat liggen zoeken en heb zo een eigenschap gevonden waar je bij het aanroepen van een javascript een "defer" tag moet bijvoegen, dit zorgt er voor dat alles wel werkt in IE. Het probleem is nu echter dat een probleem optreed in FF. De afbeelding die op de site in de module moet infaden, doet dit helemaal onderaan de site.

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
// no direct access
defined('_JEXEC') or die('Restricted access');

// Loading images, urls, and titles
$image  = explode ( "\n", trim ($params->get( 'images' ) ) );
$url    = explode ( "\n", trim ($params->get( 'urls' ) ) );

// If adding "http" automatically is YES
$addhttp = trim($params->get( 'addhttp' ));

if ($addhttp) {
    for ( $i=0 ; $i < count($image) ; $i++ ) {
        $url[$i]="http://".$url[$i];
    }
}
?>

<!-- JAVASCRIPT - INITIALS -->
<script type="text/javascript" defer="defer">
    var fadebgcolor=""
    var fadeimages=new Array()
    <?php for ( $i=0 ; $i < count($image) ; $i++ ) {  ?>
        fadeimages[<?php echo $i; ?>] = ["<?php echo JURI::root() . trim($params->get( 'folder' )) . "/" . $image[$i]; ?>", "<?php echo $url[$i] ?>", "_new"]
    <?php } ?>
</script>

<!-- JAVASCRIPT -->
<script src="<?php echo JURI::root(); ?>modules/mod_slideshow/scripts/fscript.js" language="JavaScript1.2" defer="defer"></script>

<?php if (trim($params->get( 'random' )) == 'R') : ?>
    <script type="text/javascript" defer="defer">
        //new fadeshow(IMAGES_ARRAY_NAME, slideshow_width, slideshow_height, borderwidth, delay, pause (0=no, 1=yes), optionalRandomOrder)
        new fadeshow(fadeimages, <?php echo trim($params->get( 'width' )); ?>, <?php echo trim($params->get( 'height' )); ?>, 0, <?php echo trim($params->get( 'delay' )); ?>, <?php echo trim($params->get( 'stopslide' )); ?>, "R")
    </script>

<?php else : ?>
    <script type="text/javascript" defer="defer">
        //new fadeshow(IMAGES_ARRAY_NAME, slideshow_width, slideshow_height, borderwidth, delay, pause (0=no, 1=yes))
        new fadeshow(fadeimages, <?php echo trim($params->get( 'width' )); ?>, <?php echo trim($params->get( 'height' )); ?>, 0, <?php echo trim($params->get( 'delay' )); ?>, <?php echo trim($params->get( 'stopslide' )); ?>)
    </script>

<?php endif; ?>


Snapt er iemand wat ik bedoel, en weet iemand een oplossing hiervoor?

Grz, Jeroen

Acties:
  • 0 Henk 'm!

Verwijderd

Op zich natuurlijk nooit netjes om <script> tags in je body te hebben, maar enfin.

In scripts sluit je de regels niet af, misschien dat dit helpt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script type="text/javascript" defer="defer">
    var fadebgcolor=""; //<- puntkomma
    var fadeimages=new Array(); //<- puntkomma
    <?php for ( $i=0 ; $i < count($image) ; $i++ ) {  ?>
        fadeimages[<?php echo $i; ?>] = ["<?php echo JURI::root() . trim($params->get( 'folder' )) . "/" . $image[$i]; ?>", "<?php echo $url[$i] ?>", "_new"]; //<- puntkomma[s][/s]
    <?php } ?>

<?php if (trim($params->get( 'random' )) == 'R') : ?>
    <script type="text/javascript" defer="defer">
        //new fadeshow(IMAGES_ARRAY_NAME, slideshow_width, slideshow_height, borderwidth, delay, pause (0=no, 1=yes), optionalRandomOrder)
        new fadeshow(fadeimages, <?php echo trim($params->get( 'width' )); ?>, <?php echo trim($params->get( 'height' )); ?>, 0, <?php echo trim($params->get( 'delay' )); ?>, <?php echo trim($params->get( 'stopslide' )); ?>, "R"); //<- puntkomma
    </script>

<?php else : ?>
    <script type="text/javascript" defer="defer">
        //new fadeshow(IMAGES_ARRAY_NAME, slideshow_width, slideshow_height, borderwidth, delay, pause (0=no, 1=yes))
        new fadeshow(fadeimages, <?php echo trim($params->get( 'width' )); ?>, <?php echo trim($params->get( 'height' )); ?>, 0, <?php echo trim($params->get( 'delay' )); ?>, <?php echo trim($params->get( 'stopslide' )); ?>); //<- puntkomma
    </script>

<?php endif; ?>


Omdat je zegt dat FF het eerst wel deed, en nu niet meer, zou ik wel graag willen weten wát er niet meer goed gaat. Kun je wat debug informatie geven?

[ Voor 52% gewijzigd door Verwijderd op 15-10-2009 15:06 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Even een reactie op het bovenstaande:

Er is helemaal niks mis met een javascript in je body tag te hebben. Bijvoorbeeld Google Adsense kan niet zonder javascript in de body, net als Google Analytics.

Ook zal de daadwerkelijke content van een pagina sneller laden als je de javascript aan het eind van de body pas inlaadt in plaats van in de head.

[ Voor 3% gewijzigd door Verwijderd op 15-10-2009 18:34 ]


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:22

MueR

Admin Tweakers Discord

is niet lief

Ook even in reactie op Spijtbetuiging:
Het afsluiten van regels met de semicolon is in javascript niet verplicht. Als er maar een statement per regel staat is het optioneel. Voor meerdere statements op een regel zul je wel moeten.

En Ruudchen:
Wanneer je inline scripts pas op domready laat werken is er niks aan de hand ;)

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

MueR schreef op donderdag 15 oktober 2009 @ 19:42:
[...]
En Ruudchen:
Wanneer je inline scripts pas op domready laat werken is er niks aan de hand ;)
Tenzij ze document.write() gebruiken...

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Probeer jij je pagina maar valide te houden met <script></script> in je body. ;) Maar als je dat niet boeit, dan zal het wel. Dat van die semi columns wist ik niet trouwens.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op vrijdag 16 oktober 2009 @ 12:02:
Probeer jij je pagina maar valide te houden met <script></script> in je body. ;) Maar als je dat niet boeit, dan zal het wel.
:? Dat is gewoon valide hoor...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 12:55
crisp schreef op vrijdag 16 oktober 2009 @ 12:06:
[...]

:? Dat is gewoon valide hoor...
misschien dat hij normaal xhtml valid wil en vergeet de CDATA toe te voegen?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Caelorum schreef op vrijdag 16 oktober 2009 @ 16:00:
[...]

misschien dat hij normaal xhtml valid wil en vergeet de CDATA toe te voegen?
Waarschijnlijk, maar dan maakt hij gewoon zelf dus een fout :P Sowieso als je niet snapt wat XHTML precies inhoudt en hoe en wanneer je het toe moet passen dan moet je het gewoon niet gebruiken...

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 10:22

MueR

Admin Tweakers Discord

is niet lief

crisp schreef op donderdag 15 oktober 2009 @ 23:35:
Tenzij ze document.write() gebruiken...
Tja, afhankelijkheden van document.write() op die specifieke plek in je source vind ik over het algemeen nogal twijfelachtig. Ik kan me zo niet iets bedenken wat ik niet zonder document.write() kan doen, al snap ik wel waarom bijvoorbeeld een Google Analytics het wel doet.

[ Voor 4% gewijzigd door MueR op 16-10-2009 16:18 ]

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1