Flashvideo仍然在使用jQuery删除的DIV上播放(IE bug)

我有一些jQuery选项卡,其中一个包含Flashvideo。 当我在一个选项卡中播放video并在FF或Safari中单击另一个video时,video会随声音停止,单击返回video选项卡会重新加载内容 – 正如预期的那样。

在Internet Explorer中情况并非如此,即使未选择选项卡,video也会继续播放。 我的理解是当display:none (jQuery hide())被应用时,DOM元素基本上从布局中移除 – 为什么IE浏览器不会发生这种情况,我该如何解决?

要删除video然后重新添加,请将以下内容添加到关闭video窗口的function中:

  // Remove and re-add video var clone = $("#video-holder").clone(true); $("#video-holder").remove(); $("#video").html(clone); 

你有一个周围的“video”div,以及一个包含嵌入代码的“video持有者”div。

你可以尝试删除元素,当你从包含闪存的div跳出时,如$("object").remove();

只需这样刷新:

 var a = document.getElementById('div_movie').innerHTML; document.getElementById('div_movie').innerHTML = a; 

$( “#VideoContainer”)HTML( “”)。

似乎是正确的答案,但如果我点击两次相同的元素,它将保持为空。

只需清除video的容器,如下所示:

$( “#VideoContainer”)HTML( “”)。

这可能是因为你正在应用display: none; 持有flash对象的div,而不是flash对象本身。

今天我正在弄乱一些类似的问题,虽然我没有一个确切的解决方案,但我确实有可能你跳过div之间尝试关闭玩家:

 $(flashobjectid).attr('height', '0'); 

如果您正在使用的Flash播放器恰好是常用的jw播放器,那么您可以这样做(当您隐藏div时):

 document.getElementById(playerId).sendEvent("PLAY","false"); 

您可能需要在页面的onBlur事件上为播放器player.pause player.stopplayer.pause函数。

你可以做的最有用的事情是你正在使用的video播放器的post。 Youtube和Brightcove都有可用于控制播放器的Javascript API。 就像tahdhaze在这里说的那样,最好的办法是在window.onBlur事件上停止玩家,并在获得焦点时再次启动它。

使用CSS来阻止video播放是最棘手的,最糟糕的是黑客攻击…使用播放器附带的Flash-Javascript桥接API。

 $("#flashContainer").empty() 

还将刷新嵌入代码并停止Flash


我们遇到了同样的问题。 Flashvideo是使用swfobject.embedSWF(…)嵌入的,但是当使用jquery隐藏div时,IE9没有停止video。

简单的workardound:再次调用swfobject.embedSWF(…)以(重新)将swf加载到同一目标div中。

如果您有自动播放的video,请在隐藏时尝试加载另一个空的swf文件。 干杯

我对嵌入的YouTubevideo遇到了同样的问题。 这是IE,Firefox,Chrome和Safari中的最终解决方案:

下面是jQuery脚本,HTML和CSS,用于解决IE隐藏嵌入式YouTubevideo时继续播放声音的问题。

这是jQuery脚本(我放在结束体标记之前):

  

这是HTML结构。 具有“旅游”类的链接标签是用于打开带有video的弹出窗口的图像链接。 ID为“Video1”的div标签是div的容器div,其ID为“tinleyvideo”,其中包含YouTube嵌入式iframe代码。 带有“close”类的链接标记使用jQuery隐藏video。

   

CSS(它定位弹出窗口,最初将它的显示设置为无,并添加其他自定义样式):

 #video1 { position: absolute; top:240px; left:220px; width:560px; height:360px; display: none; -moz-border-radius: 10px; padding: 10px; background-color: #486A74; border: 3px solid #DCC35C; z-index:400; } 

希望这可以帮助。

我的解决方案,这应该工作:

 $('#myVideoContainer object').remove(); 

没有必要使用JQuery,纯粹的Javascript解决方案就足够了。 只需用自己的克隆替换玩家div:

oldVideoDiv = document.getElementById(videoId);

newVideoDiv = oldVideoDiv.cloneNode(true);

oldVideoDiv.parentNode.replaceChild(newVideoDiv,oldVideoDiv);