Skip to main content

Flash on top of jQuery dialog



I know many have asked this question, but I think my situation is a little bit different.





I have a site where I have some ads which is Flash hidden in a because of xhtml/html compatibility issues. But the flash elements is on top of my jQuery dialogs which is not ideal.





Some solutions have suggested setting wmode to opaque but I can't because my ads are scripts which outputs flash elements.





Another solution suggested hiding ads when a dialog is shown. So my question is: Is there a way to put flash content behind my jQuery dialogs while they are visible and without altering the flash code?





Best regards, Lasse Espeholt





Update: I have now reopned the question with a bounty. As for now, I hide every Flash ad on "show dialog". But this is still not an optimal solution. So, I'm looking for a script which can make every Flash animation to opaque (a jQuery solution would be nicest, but a plain JavaScript solution will do). Or if there should be another solution not discussed in this question, I'll be happy to hear about it :)





Update 2: So far, I have made this 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>');

}







which works in FF and Chrome but not in IE. Apparently, .append fails. Any ideas?



Source: Tips4all

Comments

  1. You can't put HTML in front of Flash unless you set wmode to opaque (or transparent).

    With the default wmode ("window") the Flash Player takes over all rendering and user interaction in its area. So the browser can't display any HTML in that area. What wmode=" opaque" (or wmode="transparent") does is that it disables this default behavior and kind of integrates the Flash Player area in the browsers usual rendering and layering and such.

    But you don't need to alter any Flash content to set wmode, since it is done in the HTML (or via SWFObject or other script that inserts the Flash object element) so if you have control over the "scripts which outputs flash elements" that you mention, you can take care of the wmode setting there.

    ReplyDelete
  2. How about manually setting wmode to opaque with javascript after the flash has already loaded?

    ReplyDelete
  3. I have just read this post and tried to add parameter wmode="opaque" in an object tag. It works for IE 8. I'm sorry if my post is too late.

    ReplyDelete
  4. Search google for "iframe shim".
    Basically putting an iframe behind the html will bring it over the flash content (ignoring wmode settings).

    Bye bye

    ReplyDelete
  5. i think i have a solution. Using the jquery-ui dialog, Spent hours and hours trying to figure this out - worked for me,

    Logic was if i can't make the jquery go front, make all flash content go back. research took me to this link - finally finally it worked.

    How do I programmatically set all <object>'s to have the wmode set to opaque?

    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;


    and

    if(window.onload) {
    var onLoad = window.onload;
    window.onload = function() {
    onLoad();
    makeObjectsOpaque3();
    };
    } else {
    window.onload = makeObjectsOpaque3;
    }

    ReplyDelete

Post a Comment

Popular posts from this blog

[韓日関係] 首相含む大幅な内閣改造の可能性…早ければ来月10日ごろ=韓国

div not scrolling properly with slimScroll plugin

I am using the slimScroll plugin for jQuery by Piotr Rochala Which is a great plugin for nice scrollbars on most browsers but I am stuck because I am using it for a chat box and whenever the user appends new text to the boxit does scroll using the .scrollTop() method however the plugin's scrollbar doesnt scroll with it and when the user wants to look though the chat history it will start scrolling from near the top. I have made a quick demo of my situation http://jsfiddle.net/DY9CT/2/ Does anyone know how to solve this problem?

Why does this javascript based printing cause Safari to refresh the page?

The page I am working on has a javascript function executed to print parts of the page. For some reason, printing in Safari, causes the window to somehow update. I say somehow, because it does not really refresh as in reload the page, but rather it starts the "rendering" of the page from start, i.e. scroll to top, flash animations start from 0, and so forth. The effect is reproduced by this fiddle: http://jsfiddle.net/fYmnB/ Clicking the print button and finishing or cancelling a print in Safari causes the screen to "go white" for a sec, which in my real website manifests itself as something "like" a reload. While running print button with, let's say, Firefox, just opens and closes the print dialogue without affecting the fiddle page in any way. Is there something with my way of calling the browsers print method that causes this, or how can it be explained - and preferably, avoided? P.S.: On my real site the same occurs with Chrome. In the ex