Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jQuery对话框顶部闪烁_Jquery_Html_Flash_Dialog_Z Index - Fatal编程技术网

在jQuery对话框顶部闪烁

在jQuery对话框顶部闪烁,jquery,html,flash,dialog,z-index,Jquery,Html,Flash,Dialog,Z Index,我知道很多人问过这个问题,但我觉得我的情况有点不同 我有一个网站,在那里我有一些广告,因为xhtml/html兼容性问题而被隐藏在Flash中。但是flash元素位于我的jQuery对话框之上,这并不理想 一些解决方案建议将wmode设置为不透明,但我不能,因为我的广告是输出flash元素的脚本 另一个解决方案建议在显示对话框时隐藏广告。所以我的问题是:有没有一种方法可以在jQuery对话框可见且不改变flash代码的情况下将flash内容放在它们后面 致以最良好的祝愿, 埃斯佩霍尔特女士 更新

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

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

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

另一个解决方案建议在显示对话框时隐藏广告。所以我的问题是:有没有一种方法可以在jQuery对话框可见且不改变flash代码的情况下将flash内容放在它们后面

致以最良好的祝愿, 埃斯佩霍尔特女士

更新: 我现在再次悬赏回答这个问题。至于现在,我在“ShowDialog”上隐藏了每个Flash广告。但这仍然不是最佳解决方案。因此,我正在寻找一个脚本,它可以使每个Flash动画不透明(jQuery解决方案最好,但普通JavaScript解决方案就可以了)。或者,如果这个问题中没有讨论其他解决方案,我很乐意听到:)

更新2: 到目前为止,我制作了以下脚本:

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>');
}
函数opaqueAllFlashMovies(){
//嵌入Flash电影
$('embed[wmode!=“opaque”]).attr('wmode','opaque').wrap(“”);
//对象具有wmode参数的flash影片
$('object[classid$=“-444553540000”]parem[wmode]”)。attr('value','opaque');
//不带wmode参数的对象flash影片
$('object[classid$=“-444553540000”]')。非('param[wmode]')。附加('''.wrap('');
}

在FF和Chrome中有效,但在IE中无效。显然,
.append
失败。有什么想法吗?

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

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

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


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

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

我想我有一个解决办法。使用jQueryUI对话框,花了好几个小时试图解决这个问题——对我来说很有效

逻辑是,如果我不能让jquery向前,那么就让所有flash内容向后。研究把我带到了这个链接上——终于成功了

在谷歌搜索“iframe shim”。 基本上,将iframe放在html后面将使其覆盖flash内容(忽略wmode设置)


再见

我无法控制脚本。它们是提供的,如果需要,可以每秒更改。我的脚本在“iframes”标签中。我可以将jQuery设置为在每个flash对象(包括“iframes”中的flash对象)中编辑wmode吗?好的,这太糟糕了。我不知道是否可以让jQuery动态地修改flash对象html代码,但一旦加载flash,就修改它可能需要重新加载flash,我认为,这会导致每个广告加载两次。我认为,在显示对话框时隐藏广告似乎是目前为止最好的解决方案。当乔布斯说他不支持Flash时,人们实际上在抱怨。Facepalm@Kerin,这与浏览器插件有关,而不是与Flash有关。其他插件也存在同样的问题,如Unity player和Java小程序(但苹果在iOS中也不支持这些插件)。是的,这是可行的。但正如我所说,我需要它来为我无法控制脚本的广告工作。嗨,你看到詹姆斯在同一页上的评论了吗?如果不影响这一点,我将再次尝试它们:)这是结果之一:。你可以模仿他的方法来解决这个问题。。。
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;
}