Caricare una parte di sito subito e l'altra quando quest'ultima ha terminato..

ale1kids

Nuovo Utente
7 Mar 2008
11
0
0
Ciao ragazzi ho un problema, sto realizzando un sito web che ha un menu fatto in flash un po' pesantuccio con un preload annesso..
Sotto a questo ho lasciato uno spazio per le news flash..che vengono caricate da DB e visualizzate come testo scorrevole da destra a sinistra tramite un javascript..

Cosa accade?Quando carico la pagina a cache vuota, mentre mi esegue il preload del menu in flash, nel riquadro lasciato per le news mi vengono visualizzati i contenuti di quest'ultime una sotto l'altra tutte "appiccicate" fra loro..insomma una gran ciofeca..
E poi quando il preload è terminato, e il menu è caricato correttamente, le news vengono visualizzate correttamente nel loro riquadro..

Quindi mi chiedevo se era possibile, tramite un javascript, di poter visualizzare le news solo quando il menu si era scaricato correttamente..visto che l'errore/orrore è solo li..
E' realizzabile una cosa del genere secondo voi?

Il javascript per il testo scorrevole che sto utilizzando è questo:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript">
Retain this message and you may use the code freely.

var speed=50        // speed of scroller
var step=3          // smoothness of movement
var top="#top"      // name of anchor used as page top when clicking start / stop / show
var Start= "Start"  // Text for start link
var Stop = "Stop"   // Text for stop link
var Show = "Show"   // Text for show link

var x, scroll, divW, sText=""

function onclickIE(idAttr,handler,call){
  if ((document.all)&&(document.getElementById)){idAttr[handler]=new Function(call)}
}

function addLink(id,call,txt){
  var e=document.createElement('A')
  e.setAttribute('href',top)
  e.setAttribute('onclick',call)
  var linktext=document.createTextNode(txt)
  e.appendChild(linktext)
  document.getElementById(id).appendChild(e)
}

function addControls(){
  addLink('controls','clickAction(0)',Stop)
  onclickIE(document.getElementById('controls').childNodes[0],"onclick",'clickAction(0)')
  document.getElementById('controls').appendChild(document.createTextNode(' | '))
  addLink('controls','clickAction(2)',Show)
  onclickIE(document.getElementById('controls').childNodes[2],"onclick",'clickAction(2)')
}

function stopScroller(){clearTimeout(scroll)}

function setAction(node,callvalue,txt){
  var c=document.getElementById('controls')
  c.childNodes[node].setAttribute('onclick','clickAction('+callvalue+')')
  onclickIE(document.getElementById('controls').childNodes[node],"onclick",'clickAction('+callvalue+')')
  c.childNodes[node].firstChild.nodeValue=txt
}

function clickAction(no){
  switch(no) {
    case 0:
      stopScroller()
      setAction(0,1,Start)
      setAction(2,2,Show)
      break
    case 1:
      startScroller()
      setAction(0,0,Stop)
      setAction(2,2,Show)
      break
    case 2:
      stopScroller()
      setAction(0,1,Start)
      setAction(2,3,Start)
      x=0
      document.getElementById('tag').style.whiteSpace='normal'
      document.getElementById('tag').style.left='0px'
      break
    case 3:
      startScroller()
      setAction(0,0,Stop)
      setAction(2,2,Show)
      x=divW
      document.getElementById('tag').style.left=x+'px'
  }
}

function startScroller(){
  document.getElementById('tag').style.whiteSpace='nowrap'
  var p=document.createElement('P')
  p.id='testP'
  p.style.fontSize='25%' //fix for mozilla. multiply by 4 before using
  x-=step
  if (document.getElementById('tag').className) p.className=document.getElementById('tag').className
  p.appendChild(document.createTextNode(sText))
  document.body.appendChild(p)
  pw=p.offsetWidth
  document.body.removeChild(p)
  if (x<(pw*4)*-1){x=divW}
  document.getElementById('tag').style.left=x+'px'
  scroll=setTimeout('startScroller()',speed)
}

function initScroller(){
  if (document.getElementById && document.createElement && document.body.appendChild) {
    addControls()
    document.getElementById('controls').style.display='block'
    divW=document.getElementById('scroller').offsetWidth
    x=divW
    document.getElementById('tag').style.position='relative'
    document.getElementById('tag').style.left=divW+'px'
    var ss=document.getElementById('tag').childNodes
    for (i=0;i<ss.length;i++) {sText+=ss[i].nodeValue+" "}
    scroll=setTimeout('startScroller()',speed)
  }
}

function addLoadEvent(func) {
  if (!document.getElementById | !document.getElementsByTagName) return
  var oldonload = window.onload
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload()
      func()
    }
  }
}

addLoadEvent(initScroller)
</script>
  <style type="text/css" media="screen">
body {font:80%/150% verdana,sans-serif; color:#006; margin:0}
h1 {font:200% georgia,serif; color:#009; margin-top:20px}


/* position:relative and overflow:hidden are required */
#scroller {position:relative; overflow:hidden; width:100%; border:1px solid #657}

/* display:none prevents the controls being shown when JavaScript is not present */
#controls {display:none; text-align:right}

/* add link formatting for the controls */
#controls a {}

/* add formatting for the scrolling text */
#tag {margin:2px 0}

/* #testP must also contain all text-sizing properties of #tag */
#testP {visibility:hidden; position:absolute; white-space:nowrap;}

/* used as a page top marker and to limit width */
#top {width:350px; margin:auto}    
    
    </style>
</head>
<body>
<h2>Text Scroller accessibile</h2>
<div id="scroller">
<p id="tag">Ciao io sono il messaggio. usa i link a destra per osservarmi meglio. Ciao!!</p>
</div>
    <p id="controls"></p>

</BODY>
</HTML>
Attendo news..grazie a tutti!
 

PoLe

MRW Moderator
6 Giu 2005
2.210
3
0
36
.: Venezia :.
www.bzconsulting.it
Ciao :)

Dando uno sguardo veloce, dovrebbero bastare questi due passaggi:


1. Rimuovi la riga che ti ho messo in rosso:
Codice:
...
  }
}

[COLOR="red"][B]addLoadEvent(initScroller)[/B][/COLOR]
</script>
...
2. Inserisci la parte in blu:
<body onload='javascript:addLoadEvent(initScroller);'>

Facci sapere
:byebye:
 

ale1kids

Nuovo Utente
7 Mar 2008
11
0
0
no purtroppo non funziona, rimanse fisso tutto il contenuto scasinandomi il layout..senza scroll a sinistra..

Non ti ho detto che la parte dello script nell'head l'ho ricopiata in un *.js che richiamo nel template del sito (in modo da essere W3C approved)..

E comunque una domanda..
Io il menù in flash in questione lo carico dentro al body, e quindi se metto il suo caricamente quando accede al body non penso cambi qualcosa per quanto riguarda il mio problema..

Altra domanda e se facessi in modo, magari con wait o sleep o loop che aspetti a caricare questo script?o ancor meglio il <div id="news">..</div> che identifica le news..non dovrei riuscire a risolvere?

Ho provato anche con il marquee, ma uno non è W3C standard e due in firefox si vede in un modo e in ie7 si vede in un'altro..

Ragazzi qualche aiuto?:crying: Grazie ancora.. :(