Bonjour !

J'ai un problème pour le moins étrange. Dans une page PHP, j'ai un script que j'ai pompé du code du forum SMF que j'administre, pour faire apparaître les nouvelles avec des fondus enchaînés. Ce code fonctionne très bien sous Firefox, mais Internet Explorer 6 donne l'erreur :
line 26, car. 2. smfFadeContent.length is null or is not object
Je ne comprends pas du tout quel est le problème avec JS et cette variable...
Peut-être que vous, plus calés que moi en JS, auront le flair :-)

Je précise que les variables du type "$settings['show_newsfader']" ou "$context['fader_news_lines']" sont définies et ont les bonnes valeurs...

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
<?php 
if ($settings['show_newsfader'] && !empty($context['fader_news_lines'])) {
echo '
<script language="JavaScript" type="text/javascript" src="http://www.mydomain.tld/forum/Themes/default/script.js?rc3"></script>
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
var smf_theme_url = "http://www.mydomain.tld/forum/Themes/mytheme";
var smf_images_url = "http://www.mydomain.tld/forum/Themes/mytheme/images";
var smf_scripturl = "http://www.mydomain.tld/forum/index.php";
// ]]></script>';
 
echo '
        <div id="smfFadeScroller" style="width: 90%; padding: 2px;"><b>', $context['news_lines'][0], '</b></div>';
 
echo 
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
        // The fading delay (in ms.)
        var smfFadeDelay = ', empty($settings['newsfader_time']) ? 5000 : $settings['newsfader_time'], ';
        // Fade from... what text color? To which background color?
        var smfFadeFrom = {"r": 0, "g": 0, "b": 0}, smfFadeTo = {"r": 255, "g": 255, "b": 255};
        // Surround each item with... anything special?
        var smfFadeBefore = "", smfFadeAfter = "";

        var foreColor, backEl, backColor;

        if (typeof(document.getElementById(\'smfFadeScroller\').currentStyle) != "undefined")
        {
                foreColor = document.getElementById(\'smfFadeScroller\').currentStyle.color.match(/#([\da-f][\da-f])([\da-f][\da-f])([\da-f][\da-f])/);
                smfFadeFrom = {"r": parseInt(foreColor[1]), "g": parseInt(foreColor[2]), "b": parseInt(foreColor[3])};

                backEl = document.getElementById(\'smfFadeScroller\');
                while (backEl.currentStyle.backgroundColor == "transparent" && typeof(backEl.parentNode) != "undefined")
                        backEl = backEl.parentNode;

                backColor = backEl.currentStyle.backgroundColor.match(/#([\da-f][\da-f])([\da-f][\da-f])([\da-f][\da-f])/);
                smfFadeTo = {"r": eval("0x" + backColor[1]), "g": eval("0x" + backColor[2]), "b": eval("0x" + backColor[3])};
        }
        else if (typeof(window.opera) == "undefined" && typeof(document.defaultView) != "undefined")
        {
                foreColor = document.defaultView.getComputedStyle(document.getElementById(\'smfFadeScroller\'), null).color.match(/rgb\((\d+), (\d+), (\d+)\)/);
                smfFadeFrom = {"r": parseInt(foreColor[1]), "g": parseInt(foreColor[2]), "b": parseInt(foreColor[3])};

                backEl = document.getElementById(\'smfFadeScroller\');
                while (document.defaultView.getComputedStyle(backEl, null).backgroundColor == "transparent" && typeof(backEl.parentNode) != "undefined" && typeof(backEl.parentNode.tagName) != "undefined")
                        backEl = backEl.parentNode;

                backColor = document.defaultView.getComputedStyle(backEl, null).backgroundColor.match(/rgb\((\d+), (\d+), (\d+)\)/);
                smfFadeTo = {"r": parseInt(backColor[1]), "g": parseInt(backColor[2]), "b": parseInt(backColor[3])};
        }

        // List all the lines of the news for display.
        var smfFadeContent = new Array(
                "', implode('",
                "', $context['fader_news_lines']), '"
        );
// ]]></script>';
 
echo '<script language="JavaScript" type="text/javascript" src="', $settings['default_theme_url'], '/fader.js"></script>';
}
?>