2010-06-09 21 views
19

Ho una webapp che include alcuni contenuti flash in un iframe. La parte flash richiede l'accesso alla webcam. Su firefox/mac os, l'utente non può fare clic sul pulsante Consenti. Ciò accade solo quando la pagina che incorpora il file swf viene caricata nell'iframe, funziona correttamente quando viene inserito separatamente. Qualcun altro ha affrontato un problema simile? Conosci qualche soluzione alternativa?Impossibile fare clic sul pulsante Consenti nel flash su firefox

MODIFICA: Per riferimento futuro: stavamo posizionando alcune cose tramite JS e avevamo posizioni usando "mezzo pixel" (ad esempio 20.5px). Una volta stabilito che tutto andava bene.

risposta

16

Ho scoperto che questo errore si verifica anche in situazioni in cui si utilizza il margine automatico nei CSS.

Ad esempio, in una larghezza fissa & centro allineato la layout sua tipica usare "margin: 0px auto;" per mantenere un contenuto ben centrato. Ciò sembra produrre possibili (probabili) margini decimali sinistro/destro per il contenuto bene. Questo non è davvero un problema per Firefox .. gestisce gli offset dei pixel decimali proprio bene.

Ma i widget Flash sembrano totalmente fuori di testa quando il loro contenitore oggetti viene posizionato con valori di pixel decimali. Come minimo, non è possibile interagire con il pulsante "Consenti". Per me, questa sembra essere la causa alla radice di questo bug che vedrai ampiamente riportato da molti (in quanto riguarda FF atleast).

Per quanto riguarda il motivo per cui si verifica solo in FF, non ne sono del tutto sicuro. Sul mio computer OSX, Safari e Chrome non mostrano questo comportamento con gli oggetti flash. Forse tutti gli elementi DOM in Webkit vengono renderizzati automaticamente con valori di offset dei pixel arrotondati?

Per Firefox, ho implementato questa soluzione (utile per il centro di disegni allineati):

$(document).ready(function() { 
    repositionContentContainer(); 
}); 

function repositionContentContainer() { 
    // this routine is a complete hack to work around the flash "Allow" button bug 
    if ($("#content").length > 0) { 

    //Adjust the #content left-margin, since by default it likely isn't an int 
    setLeftMargin(); 
    //If the User resizes the window, adjust the #content left-margin 
    $(window).bind("resize", function() { setLeftMargin(); }); 
    } 
} 

function setLeftMargin() { 
    var newWindowWidth = $(window).width(); 
    var mainWellWidth = $("#content").width(); 
    // create an integer based left_offset number 
    var left_offset = parseInt((newWindowWidth - mainWellWidth)/2.0); 
    if (left_offset < 0) { left_offset = 0; } 
    $("#content").css("margin-left", left_offset); 
} 
+0

Questo mi ci sono voluti mesi per capire ... tutto utilizza margine auto –

+0

Trascorsi giorni per risolvere questo problema e finalmente trovato questa soluzione ... :) – Sutha

+0

Questo accade anche per me su OSX Safari 8.0.3, Flash 16.0.0.305 – d2vid

3

Questo problema viene monitorata al database dei bug di Adobe:

http://bugs.adobe.com/jira/browse/FP-4656

La questione di fondo è Firefox utilizza il posizionamento a mezzo pixel e Adobe lo utilizza in modo irregolare dopo il ridimensionamento. Questo avviene tramite swfs centrati su una pagina, o è reso ancora peggiore se il swf si trova all'interno di un iframe centrato, come la maggior parte delle app di Facebook.

È presente una matrice di soluzioni che copre lo zoom del browser, il ridimensionamento e altre complicazioni.

+0

Grazie. Buono a sapersi si sta lavorando. – Alex

7

Impostazione di wmode a 'diretto' risolto.
Non è necessario impostare i valori "margine"/"posizione" come numeri interi.

Nota che wmode 'diretta' è disponibile a partire da Flash 10 e non funziona in IE

-3

ero in grado di farlo funzionare. Ahuh!

Utilizzare il pulsante Tab fino a evidenziare l'intera finestra delle impostazioni di Flash Player, quindi premere nuovamente il pulsante Tab fino a evidenziare il pulsante "Punto interrogativo" nella parte superiore destra della casella. Premere la barra spaziatrice o il pulsante Enter ripetutamente fino a quando non si apre un'altra scheda sul browser. Ora torna indietro dalla pagina precedente in cui si trovano le impostazioni di Flash Player, premi nuovamente il pulsante Tab fino a quando non evidenzi il pulsante "Consenti" o "Nega pulsante" a seconda di cosa farai. Premere la barra spaziatrice o il pulsante Enter e voilà! Ecco qua!

Spero che aiuti. Buona serata a tutti!:)

+4

Ecco un po 'di trolling decente ...! – nirazul

0

So che questa è una vecchia questione, ma ho appena scoperto un altro problema che stava causando lo stesso problema, e questo è il risultato superiore di Google, quindi sono l'aggiunta di questa risposta.

Un gradiente CSS3 sullo sfondo della pagina (probabilmente anche su sfondi div contenitore) causerà questo problema. Rimuovi la sfumatura e il pulsante è nuovamente cliccabile.

0

Controllare anche che non hanno alcun div genitore (o il div stesso) con un CSS trasformare regola, ad esempio .:

transform: translateX(-50%); 
Problemi correlati