popup dal cross-browser .swf incorporato
-
10-07-2019 - |
Domanda
Situazione: hai un .swf incorporato in una pagina html e quando fai clic su qualcosa nel file .swf, devi far apparire una finestra senza cromatura. Normalmente questo sarebbe abbastanza facile - ma considera Safari, che disabilita completamente tutte le funzionalità 'window.open' mentre il suo blocco popup è abilitato (fa un'eccezione se la funzione è attivata sul clic, ma non conta i clic in flash) . Come puoi creare qualcosa che degrada con garbo (offre un'esperienza alternativa e approssimativamente equivalente) per i browser che non eseguiranno window.open?
(nota: si tratta di AS3 e Safari 3 per PC o Mac di cui stiamo parlando, ma più in generale, qualsiasi browser che non supporta o rifiuta di consentire la funzione javascript window.open.)
Soluzione
Se il file SWF viene caricato utilizzando wmode='opaque'
o wmode='transparent'
, è possibile disporre del codice JavaScript di output SWF che creerebbe un <div>
vuoto posizionato sopra l'area SWF. Che onclick
potrebbe quindi gestire l'evento <=> e creare la finestra popup anziché il codice Flash.
Altri suggerimenti
l'overlay div era più complicato di quanto meritasse il progetto. Dai un'occhiata a code.google.com/p / popupfromflash per il codice che ho ideato.
Tenta di utilizzare ExternalInterface per impostare una funzione window.open, e se ciò fallisce (in particolare in Safari), richiama in flash e gli chiede di fare un navigToURL per far apparire la finestra normalmente (invece che senza cromless)