2010-04-09 6 views
5

Ho un film SWF all'interno di una scheda dell'interfaccia utente jQuery, e il problema che sto avendo è che il file SWF viene ricaricato ogni volta che faccio clic via dalla scheda in un'altra scheda e quindi fare clic su Indietro. Posso controllare il DOM e vedere che il div contenente il file SWF è ancora nel DOM quando clicco via, quindi non so perché questo mi sembra di ricaricarlo quando faccio clic sulla scheda.Come arrestare SWF all'interno di una scheda dell'interfaccia utente jQuery da ricaricare

ho aggiunto le seguenti regole CSS per cercare di impedire la visualizzazione viene impostato su: nessuno, ma il filmato Flash è ancora il ricaricamento:

.ui-tabs .ui-tabs-hide { 
    display: block !important; 
    position: absolute; 
    left: -10000px; 
} 

Aggiornamento: Si scopre questo è legato al seguente Firefox bug che è stato in giro dal 2001/Firefox 0.9. Non ho ancora una buona soluzione, tuttavia.

+0

@Raul Agrait: hai provato la risposta che imposta la dimensione dell'oggetto e incorporare? risolve il problema della barra di scorrimento per me. –

+0

ottenendo lo stesso problema http://stackoverflow.com/questions/15499610/app-is-loading-each-time –

risposta

4

La soluzione accennato in precedenza funziona in Chrome, ma non in Firefox per qualsiasi ragione (io sono abbastanza sicuro che stava lavorando qualche tempo fa). Ho trovato l'ennesima soluzione:

prima è necessaria una regola generica per "nascondere" il contenuto senza utilizzare display: nessuno;

/** hide the tab without using display:none; **/ 
.ui-tabs .ui-tabs-hide {  
display: block !important; 
height: 0!important; 
width: 0!important; 
border:none!important; 
visibility:hidden!important; 

}

/** make sure your swf does not have leftover height when hidden **/ 
.ui-tabs .ui-tabs-hide object, 
.ui-tabs .ui-tabs-hide embed { 
    height: 0; 
    width: 0; 
} 

funziona per me. Dimmi se funziona per te! Jerome WAGNER

+0

@Jerome WAGNER: Il problema con questo è che nella tua interfaccia utente, ottieni una barra di scorrimento davvero grande perché il DOM è ancora include nel suo layout tutti gli elementi per ogni scheda, anche quando non sono nella scheda attiva. –

+0

@Raul Agrait: Penso di aver corretto il problema della barra di scorrimento con una modifica apportata alla mia risposta. Dimmi! –

+0

Sebbene la tua soluzione non risolva del tutto il mio problema, aiuta in qualche modo, quindi accetterò per concederti la taglia per fornire la risposta migliore. –

1

Alcuni browser (ad esempio il firefox) stanno ricaricando i filmati flash non appena si nasconde/mostra (display: nessuno;) su di essi. Questo è ciò che sta accadendo con il sistema di schede. L'unica soluzione che conosco è

  1. avere il flash con una posizione: assoluta;
  2. ascoltare l'evento del sistema di scheda
  3. assicurarsi che il flash viene spostato dentro e fuori la visualizzazione dello schermo quando viene visualizzata la scheda/nascosto

Questo può diventare difficile se si vuole un multi-flash , soluzione generica ..

spero che questo vi aiuterà a

+0

Ciao, potresti elaborare sul -1? Questo è ciò che stavo osservando su Firefox. Di solito metto il flash assolutamente posizionato all'esterno del div tab. –

+0

Sì, ho cliccato accidentalmente sulla freccia in giù e ho tentato di annullarlo, ma ora ricevo un messaggio che dice "Vota troppo vecchio per essere modificato, a meno che questa risposta non venga modificata" - forse potresti fare una piccola modifica? –

+0

Ho fatto la modifica. Quindi l'hai provato con il tuo css e non ha funzionato? Ho visto la tua taglia e cercherò di dare un'occhiata più profonda nei prossimi giorni se nessun altro risponde prima ;-) –

1

Proprio come un aggiornamento per la risposta accettata. Nelle versioni più recenti dell'interfaccia utente di jQuery, le classi sono cambiate.

.ui-tabs .ui-tabs-hide 

nel css deve ora essere sostituito con:

.ui-tabs .ui-tabs-panel[aria-hidden="true"] 

Speranza che aiuta