Flash sulla parte superiore della finestra di dialogo jQuery

So che molti si sono posti questa domanda, ma penso che la mia situazione è un po ‘ diverso.

Ho un sito dove ho alcuni annunci che Flash è nascosto in una causa di xhtml/html problemi di compatibilità. Ma il flash elementi è in cima alla mia jQuery finestre di dialogo che non è l’ideale.

Alcune soluzioni hanno suggerito l’impostazione wmode opaco ma non posso perché i miei annunci sono script che restituisce gli elementi in flash.

Un’altra soluzione suggerita nascondere annunci quando una finestra di dialogo viene visualizzata. Quindi la mia domanda è: c’È un modo per mettere il contenuto flash dietro le mie finestre jQuery, mentre sono visibili e senza alterare il codice flash?

I migliori saluti,
Lasse Espeholt

Aggiornamento:
Ora ho reopned la domanda con un bounty. Per adesso mi nascondi ogni Flash annuncio su “mostra la finestra di dialogo”. Ma questo non è ancora una soluzione ottimale. Così, sto cercando uno script che possono rendere ogni animazione Flash opaco (jQuery soluzione sarebbe più bello, ma un semplice JavaScript soluzione farà). O se ci dovrebbe essere un’altra soluzione, non viene discusso in questa domanda, sarò felice di sentire su di esso 🙂

Aggiorna 2:
Finora, ho fatto questo script:

function opaqueAllFlashMovies() {
    //Embed Flash movies
    $('embed[wmode!="opaque"]').attr('wmode', 'opaque').wrap('<div>');

    //Object flash movies with a wmode param
    $('object[classid$="-444553540000"] parem[wmode]').attr('value', 'opaque');
    //Object flash movies without a wmode param
    $('object[classid$="-444553540000"]').not('param[wmode]').append('<param name=\'wmode\' value=\'opaque\'/>').wrap('<div>');
}

che lavora in FF e Chrome, ma non in IE. A quanto pare, .append non riesce. Tutte le idee?

 

5 Replies
  1. 13

    Non è possibile inserire codice HTML di fronte a Flash, a meno di impostare wmode opaco (o trasparente).

    Di default con il wmode (“finestra”) il Flash Player assume il rendering e l’interazione dell’utente nel suo ambito. In modo che il browser non riesce a visualizzare il codice HTML presente in quella zona. Cosa wmode=” opaco” (o wmode=”transparent”) non è che si disattiva il comportamento predefinito e tipo di integra il Flash Player zona nel browser di consueto, il rendering e la stratificazione e tale.

    Ma non c’è bisogno di modificare qualsiasi contenuto Flash per impostare wmode, dal momento che si è fatto in HTML (o via SWFObject o altri script che inserisce l’oggetto Flash elemento), quindi se si ha il controllo su gli script che restituisce gli elementi in flash” che hai citato, si può prendere cura di wmode impostazione c’.

    • Non ho il controllo su di script. Essi sono forniti e in grado di cambiare ogni secondo se si deve. Ho il mio script in “iframe” <object type=”text/html”/> tag. Posso impostare jQuery per modificare wmode in ogni flash oggetti compresi flash oggetti all’interno di “iframe”?
    • OK, che è male. Non so se si potrebbe fare jQuery alterare il flash in oggetto codice html al volo, ma alterare, una volta che il flash ha caricato può richiedere una ricarica del flash, penso, risultante in ogni annuncio viene caricato due volte. Nascondere gli annunci quando una finestra di dialogo viene visualizzata sembra la soluzione migliore finora, credo.
    • Che è quello che ho fatto ora, grazie 🙂
    • In realtà le persone si LAMENTAVANO quando Jobs ha detto che non aveva intenzione di supporto Flash. Facepalm.
    • questo è legato al plugin del browser piuttosto che Flash, lo stesso tipo di problemi può essere visto con altri plugin, come Unity player e Java Applet (ma ancora una volta, Apple non supporta chi sia in iOS).
  2. 2

    penso di avere una soluzione. Utilizzando jquery-ui finestra di dialogo, ha Trascorso ore e ore a cercare di capire questo – ha funzionato per me,

    Logica se io non posso fare jquery andare anteriore, rendono tutti i contenuti flash tornare indietro. la ricerca mi ha preso a questo link – infine, infine, si è lavorato.

    Come faccio a impostare a livello di programmazione di tutte oggetto <>’s per avere il wmode set opaco?

    function makeObjectsOpaque3() {
        var elementToAppend = document.createElement('param');
        elementToAppend.setAttribute('name', 'wmode');
        elementToAppend.setAttribute('value', 'opaque');
        var objects = document.getElementsByTagName('object');
        for(var i = 0; i < objects.length; i++) {
            var newObject = objects[i].cloneNode(true);
            elementToAppend = elementToAppend.cloneNode(true);
            newObject.appendChild(elementToAppend);
            objects[i].parentNode.replaceChild(newObject, objects[i]);
        }
    }
    
    window.onload = makeObjectsOpaque3;

    e

    if(window.onload) {
        var onLoad = window.onload;
        window.onload = function() {
            onLoad();
            makeObjectsOpaque3();
        };
    } else {
        window.onload = makeObjectsOpaque3;
    }
    • Ciao, hai visto James commento sulla stessa pagina? Se non influisce su questo, proverò a farle tutte di nuovo allora 🙂
  3. 1

    Ho appena letto questo post e ho cercato di aggiungere il parametro wmode=”opaco” in un tag object. Funziona con IE 8. Mi dispiace se il mio post è troppo tardi.

    • Sì, questo funziona. Ma come sono stato, ho bisogno di lavorare per gli annunci in cui non riesco a controllare lo script.
  4. 0

    Di google per la ricerca “iframe shim”.
    Fondamentalmente mettere un iframe dietro html porterà oltre il contenuto flash (ignorando wmode impostazioni).

    Bye Bye

    • si possono modificare per aggiungere più dettagli rispetto “di google per la ricerca?”
    • Questo è uno dei risultati: udm4.com/demos/extension-iframeshim.php. È possibile copiare il suo approccio per risolvere il problema…

Lascia un commento