Plone Dexterity类型嵌入SWF文件Internet Explorer不工作

时间:2013-09-04 10:35:35

标签: internet-explorer cross-browser

在Plone 4.2上使用Dexterity我创建了一个自定义类型,允许用户上传.ogg,.mp4,.webm和.swf文件,然后使用<video>元素显示这些文件。

我遇到了一个问题,似乎Internet Explorer不知道如何获取 swf 文件。

以下是我的类型的视图:

<video width="320" height="240" controls autoplay>
  <source src=""
    tal:condition="context/ogg_video_file"
    tal:attributes="src string:${context/absolute_url}/@@download/ogg_video_file/${context/ogg_video_file/filename}"
    type="video/ogg"
  />
  <source src=""
    tal:condition="context/video_file"
    tal:attributes="src string:${context/absolute_url}/@@download/video_file/${context/video_file/filename};"
    type="video/mp4"
  />
  <source src=""
    tal:condition="context/webm_video_file"
    tal:attributes="src string:${context/absolute_url}/@@download/webm_video_file/${context/webm_video_file/filename}"
      type="video/webm"
  />
  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553549D43"
    width="320" height="240" type="application/x-shockwave-flash">
    <param name="movie"
      tal:attributes="value string:${context/absolute_url}/@@download/swf_video_file/${context/swf_video_file/filename}"/>
    <param name="flashvars" value=""/>
    <param name="allowscriptaccess" value="always"/>
    <param name="allowfullscreenaccess" value="true"/>
    <param name="bgcolor" value="#FFFFFF"/>
    <embed width="320" height="240" type="application/x-shockwave-flash"
      tal:attributes="src string:${context/absolute_url}/@@download/swf_video_file/${context/swf_video_file/filename}"/>
  </object>f]-->
  </object>      
</video>

在加载Internet Explorer 8或更低版本之前,所有内容都按预期工作,显然它不支持<video>元素,因此它会呈现<object>元素,但它似乎不会找到或播放swf文件。

我试过了:

  • <object>移到<video>
  • 之外
  • 使用SWFObject.js
  • 使用硬编码的swf文件测试相同的代码但没有TALES (这适用于IE)
  • 分隔每个元素以查看所有3个标记(<video><object><embed>),以确保其中一个标记未被其他覆盖(它们仍然是将不适用于IE)
  • 将HTML中的输出路径跟踪到国际资源管理器中的SWF文件(这有效,我提示下载swf文件)
  • 注意到non-Plone related but similar question 的答案(不幸的是,这在这种情况下无效)

所以我知道我的代码有效,但我无法弄清楚为什么我没有看到我的视频。当我右键单击IE中视频应该的位置时,我只看到:

Movie not loaded...
About Adobe Flash Player 10...

如果你能对我的情况有所了解,我们将不胜感激。

当我尝试自行修复此信息时会有更多信息,我对我的代码略有怀疑

更新

<object>代码修改为以下内容后似乎:

  <object
    width="320" height="240" type="application/x-shockwave-flash"
    tal:attributes="data string:${context/absolute_url}/@@download/swf_video_file/${context/swf_video_file/filename}"
    id="swf_video">
    <param name="movie"
      tal:attributes="value string:${context/absolute_url}/@@download/swf_video_file/${context/swf_video_file/filename}"/>
    <param name="flashvars" value=""/>
    <param name="allowscriptaccess" value="always"/>
    <param name="allowfullscreenaccess" value="true"/>
    <param name="bgcolor" value="#FFFFFF"/>
  </object>

Internet Explorer似乎下载了flash电影,但没有播放。 (在页面加载时我可以看到小的消息“剩下1个项目”,这需要很长时间才能消失,我认为这意味着它正在下载视频但仍然没有播放。右键单击视频仍在显示的位置我是同一个Movie not loaded...消息

我看到的框在项目下载完成后立即消失: The box that I see which disappears as soon as the item has finished downloading

1 个答案:

答案 0 :(得分:0)

当我偶然发现一个方便的生成器时,我正在调查FlowPlayer或许给我一个更加“完成”的Internet Explorer 体验(而不仅仅是一个嵌入式swf文件): / p>

http://sandbox.thewikies.com/vfe-generator/

经过一些TALES-ifying后,它完全符合我的要求。

任何其他遇到类似问题的代码:

<video width="320" height="240" controls="controls">
  <source src=""
    tal:condition="context/webm_video_file"
    tal:attributes="src string:${context/absolute_url}/@@download/webm_video_file/${context/webm_video_file/filename}"
    type="video/webm"
  />
  <source src=""
    tal:condition="context/video_file"
    tal:attributes="src string:${context/absolute_url}/@@download/video_file/${context/video_file/filename};"
    type="video/mp4"
  />
  <source src=""
    tal:condition="context/ogg_video_file"
    tal:attributes="src string:${context/absolute_url}/@@download/ogg_video_file/${context/ogg_video_file/filename}"
    type="video/ogg"
  />          
    <object type="application/x-shockwave-flash" 
    data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" width="320" height="240">
        <param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" />
        <param name="allowFullScreen" value="true" />
        <param name="wmode" value="transparent" />
        <param name="flashVars" 
      tal:attributes="value string:config={'playlist':[{'url':'${context/absolute_url}/@@download/video_file/${context/video_file/filename}','autoPlay':true}]}"/>
        <span title="No video playback capabilities, please download the video below"></span>
    </object>
</video>

代码使用HTML5支持所有支持它的浏览器,但是对于较旧的代码,它会回退到Flowplayer的flash实现。看起来它使用<param name="movie"/>标记来引入Flash播放器,然后使用<param name="flashVars"/>标记将视频文件的URL传递给FlowPlayer。