Domanda

Ho div contenente un elenco di oggetti flash. L'elenco è lungo, quindi ho impostato l'altezza div su 400 e l'overflow su auto.

Funziona bene su FF ma su IE6 funzionano solo i primi 5 oggetti flash visibili. Il resto degli oggetti flash che inizialmente si trovano all'esterno dell'area visualizzabile sono vuoti quando scorro verso il basso. Gli swfs sono caricati bene perché non ottengo il filmato "non caricato". Sembrano anche essere incorporati correttamente, sono semplicemente vuoti, ad es. il contenuto non viene mai disegnato.

Qualche idea su come risolvere questo problema?

ps. Gli elementi html coinvolti sono principalmente fluttuanti nel caso ciò abbia un impatto su questo. Gli oggetti flash sono incorporati usando il popolare swfObject.

EDIT: sembra che il bug si verifichi solo con il plug-in flash " WIN 8,0,24,0 "

Dato che non posso pubblicare un link, riassumo qui il codice pertinente:

<div style="overflow:auto; height:400px; float:left;">
<div id="item_1" style="float:left; clear:left; height:100px;">
<!-- swfObject Embed here -->
</div>
...
<div id="item_7" style="float:left; clear:left; height:100px;">
<!-- swfObject Embed here -->
</div>
</div>

EDIT: Dopo aver provato a ricreare questo problema in una pagina separata, ho scoperto che il bug è in qualche modo correlato agli oggetti flash inizialmente nascosti. Il mio contenitore div ha " display: none; visibilità: hidden " quando la pagina è caricata. Successivamente lo stile viene modificato tramite javascript in visibile. Se carico la pagina in modo che tutto sia visibile dall'inizio, tutto va bene.

È stato utile?

Soluzione 4

Penso di avere una soluzione per questo. Non posso essere assolutamente sicuro poiché la pagina in questione è stata ristrutturata (a causa di questo errore). In seguito mi sono imbattuto in un problema simile con lo stesso componente Flash su una pagina diversa.

Il problema era che a volte il flash produceva Stage.height = 0 e Stage.width = 0. È molto probabile che ciò accada quando il flash viene avviato al di fuori della finestra del browser. Stiamo usando le dimensioni dello stage per ridimensionare i contenuti (in questo caso larghezza = 0 e altezza = 0).

La soluzione era aggiungere un gestore onEnterFrame che controlla le dimensioni dello stage e procede solo quando sono > 0.

Altri suggerimenti

Quando sto testando questo genere di cose in IE6, la prima cosa che faccio è iniziare a rimuovere le informazioni di stile. Inizia rimuovendo tutti i float e i clear sia dai DIV principali che dai DIV secondari. Se il problema persiste, rimuovi tutta la spaziatura e i margini e dai a DIV padre e DIV figlio ciascuno una larghezza del 100% (lasciando nella tua altezza di 100px). Se il problema persiste, pubblica di nuovo qui. Se dovessi avventurarmi in un'ipotesi, direi che è perché nessuno dei tuoi DIV ha una larghezza, ma questa è un'ipotesi selvaggia basata su ciò che so del bug "peekaboo".

Alcune cose che proverei:

  • rimuovi temporaneamente tutti i CSS per determinare se il problema è specifico dei CSS
  • aggiungi larghezze di pixel agli elementi fluttuati e al loro elemento principale
  • aggiungi il parametro wmode transparent a swfobject
  • aggiungi posizione: relativo

Ho sentito parlare di un bug in Flash che apparentemente si verifica solo se il flash si carica con porzioni di esso al di fuori dello schermo (ad esempio body > #flash {margin-top: -50px}). Il tuo problema potrebbe potenzialmente essere una variazione di questo.

In alternativa, è possibile eliminare del tutto il div con overflow e provare a creare un contenitore in flash con una barra di scorrimento e caricare i singoli file SWF in quell'unico file flash del contenitore.

Questa è solo una soluzione alternativa, ma potresti provare a creare segnaposto inizialmente per gli oggetti Flash (come i div con l'altezza e la larghezza corrispondenti) e caricare solo il filmato (tramite qualcosa come swfobject ) quando diventa visibile per la prima volta. Ciò può creare alcuni problemi (ovvero film non precaricati prima che siano visibili), ma può essere accettabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top