我想知道为什么最近我自己编程的flash视频播放器(使用YouTube ActionScript 3.0 player API)在Firefox中不再工作(Win,45.0.1),但在Chrome中仍然可以工作(Win,49.0.2623.110 m)。
视频播放器的图形元素在两者中都加载良好,因此flash插件可以工作,但只有Chrome显示实际的youtube视频。
我知道flash API已被弃用(https://developers.google.com/youtube/flash_api_reference),但为什么它仍然可以在Chrome中工作?有什么想法可以让它再次在firefox中运行吗?
PS:由于视频播放器及其功能的复杂性,我无法切换到html5版本的youtube播放器api。
更新:
<object width="640" height="360" id="video" data="video.swf" type="application/x-shockwave-flash">
<param value="video.swf" name="movie">
<param value="xml=xml?i=48-96-43" name="FlashVars">
<param value="high" name="quality">
<param value="#181818" name="bgcolor">
<param value="true" name="play">
<param value="true" name="loop">
<param value="window" name="wmode">
<param value="showall" name="scale">
<param value="true" name="menu">
<param value="false" name="devicefont">
<param value="" name="salign">
<param value="sameDomain" name="allowScriptAccess">
<a href="http://www.adobe.com/go/getflash">
<img alt="Get Adobe Flash player" src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif">
</a>
</object>
这里有一个无铬Youtube SWF在Firefox中工作的例子。
简单的答案是…确保您的SWF文件是从https
位置提供的。如果没有(SSL)绿色挂锁,SWF将不会加载任何其他外部数据。这似乎是Firefox对试图访问更多外部数据的Flash内容的新(安全)期望。
还要将AS3代码中的任何http://
引用更新为https://
。
例如:
Security.allowDomain("https://www.youtube.com");
loader.load(new URLRequest ("https://www.youtube.com/apiplayer?version=3") );
player.cueVideoByUrl("https://www.youtube.com/v/YOUR_VID_ID?version=3");