代码之家  ›  专栏  ›  技术社区  ›  Lasse Espeholt

jQuery对话框上的Flash

  •  17
  • Lasse Espeholt  · 技术社区  · 16 年前

    顺致敬意,

    到目前为止,我已经写了这个剧本:

    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>');
    }
    

    它适用于FF和Chrome,但不适用于IE, .append

    5 回复  |  直到 15 年前
        1
  •  13
  •   Lars Blåsjö    16 年前

    使用默认的wmode(“窗口”),Flash Player接管其所在区域的所有渲染和用户交互。因此,浏览器无法在该区域显示任何HTML。wmode=“不透明”(或wmode=”transparent“)的作用是禁用此默认行为,并将Flash Player区域集成到浏览器的常规渲染和分层等中。

    但是,您不需要更改任何Flash内容来设置wmode,因为它是在HTML中完成的(或通过SWFObject或其他插入Flash对象元素的脚本),所以如果您可以控制您提到的“输出Flash元素的脚本”,您可以在那里处理wmode设置。

        2
  •  2
  •   Community Mohan Dere    9 年前

    我想我有一个解决办法。使用jquery ui对话框,花了几个小时试图弄清楚这一点——对我来说很有效,

    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;
    

    if(window.onload) {
        var onLoad = window.onload;
        window.onload = function() {
            onLoad();
            makeObjectsOpaque3();
        };
    } else {
        window.onload = makeObjectsOpaque3;
    }
    
        3
  •  1
  •   Mike Crittenden    16 年前

    在加载flash后,用javascript手动将wmode设置为不透明怎么样?

        4
  •  1
  •   Tan    15 年前

    我刚刚阅读了这篇文章,并尝试在对象标签中添加参数wmode=“opaque”。它适用于IE 8。如果我的帖子太晚了,我很抱歉。

        5
  •  0
  •   pincopallo    15 年前

    基本上,将iframe放在html后面会使其覆盖flash内容(忽略wmode设置)。

    再见