首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery对话框上方的Flash

jQuery对话框上方的Flash
EN

Stack Overflow用户
提问于 2009-10-04 08:41:16
回答 5查看 11.5K关注 0票数 17

我知道很多人都问过这个问题,但我觉得我的情况有点不同。

我有一个网站,我有一些广告,这是闪光隐藏在一个,因为xhtml/html的兼容性问题。但flash元素位于我的jQuery对话框之上,这并不理想。

一些解决方案建议将wmode设置为不透明,但我不能,因为我的广告是输出flash元素的脚本。

另一种解决方案是在显示对话框时隐藏广告。所以我的问题是:有没有一种方法可以在我的jQuery对话框可见时将flash内容放在后面,而不需要更改flash代码?

致以最好的问候,Lasse Espeholt

更新:我现在已经用赏金重新提出了这个问题。至于现在,我隐藏了“显示对话框”上的每一个Flash广告。但这仍然不是一个最优的解决方案。所以,我正在寻找一个脚本,可以使每一个闪光动画不透明(一个jQuery解决方案将是最好的,但一个普通的JavaScript解决方案)。或者,如果有其他解决方案没有在这个问题中讨论,我将很高兴听到它:)

更新2:到目前为止,我已经编写了这个脚本:

代码语言:javascript
复制
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失败了。有什么想法吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-10-04 14:39:14

除非将wmode设置为不透明(或透明),否则不能将HTML放在Flash前面。

使用默认的wmode ("window"),Flash Player接管其区域内的所有渲染和用户交互。因此浏览器不能在该区域显示任何HTML。wmode=“不透明”(或wmode=“透明”)所做的是,它禁用了这种默认行为,并在浏览器中集成了Flash Player区域,通常是渲染和分层等。

但是你不需要修改任何Flash内容来设置wmode,因为这是在超文本标记语言中完成的(或者通过SWFObject或其他插入Flash对象元素的脚本),所以如果你可以控制你提到的“输出flash元素的脚本”,你可以在那里设置wmode。

票数 13
EN

Stack Overflow用户

发布于 2011-03-15 08:25:17

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

逻辑是,如果我不能让jquery放在前面,就让所有的flash内容都放回去。研究将我带到了这个链接--最终它起作用了。

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

代码语言:javascript
复制
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;

代码语言:javascript
复制
if(window.onload) {
    var onLoad = window.onload;
    window.onload = function() {
        onLoad();
        makeObjectsOpaque3();
    };
} else {
    window.onload = makeObjectsOpaque3;
}
票数 2
EN

Stack Overflow用户

发布于 2009-10-04 13:34:11

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1515939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档