Javascript 无法使swfobject 2.3.2在Firefox、Chrome或Safari上运行

Javascript 无法使swfobject 2.3.2在Firefox、Chrome或Safari上运行,javascript,html,firefox,flash,swfobject,Javascript,Html,Firefox,Flash,Swfobject,我正在尝试将我的站点从使用swfobject 1.5升级到2.3.2(最新版本),我无法在Mac上的Firefox、Chrome或Safari中播放视频。占位符将替换为播放器的轮廓,但如果我在播放器区域中单击鼠标右键,则会收到消息:“未加载电影…”。我从网络上的各种例子中得出了一些结论,这些例子看起来都很简单,而且似乎都是一致的 我相信这个路径是有效的,因为我看到的所有示例都显示了电影文件路径是相对于托管页面的(而不是相对于swfobject.js文件的位置,就像v1.5一样)。在任何情况下,我

我正在尝试将我的站点从使用swfobject 1.5升级到2.3.2(最新版本),我无法在Mac上的Firefox、Chrome或Safari中播放视频。占位符将替换为播放器的轮廓,但如果我在播放器区域中单击鼠标右键,则会收到消息:“未加载电影…”。我从网络上的各种例子中得出了一些结论,这些例子看起来都很简单,而且似乎都是一致的

我相信这个路径是有效的,因为我看到的所有示例都显示了电影文件路径是相对于托管页面的(而不是相对于swfobject.js文件的位置,就像v1.5一样)。在任何情况下,我相信路径是有效的,如果我使用了无效的路径,则不会为玩家留出空间。我甚至尝试过使用绝对URL。文件本身也是有效的,因为我可以使用swfobject v1.5毫无问题地播放它

我还尝试将javascript代码放在两个头部,也直接放在mediaspace下(不是同时放),但结果完全相同

以下是嵌入代码:

Javascript(头部):


swfobject.embeddeswf(“../media/video/jewels.mp4”、“mediaspace_jewels”、“400”、“326”、“10.0.0”);
HTML:


——出了点问题--

如果我在Firefox inspector中检查生成的代码,它会显示:

<object style="visibility: visible;" data="../media/video/jewels.mp4" type="application/x-shockwave-flash" id="mediaspace_jewels" height="326" width="400"></object>

编辑:

有一件事我有点困惑,那就是我还没有找到我如何引用我正在使用的播放器(JWPlayer)的指示。在v1.5中,它作为SWFObject构造函数中的第一个参数传递

编辑2:

以下是一个例子:


目录结构已公开以供检查。

您正在尝试嵌入MP4文件。SWFObject只嵌入SWF,然后需要一个SWF文件来加载MP4(比如JWPlayer)


JWPlayer有自己的嵌入代码,您不需要使用SWFObject。此外,JWPlayer支持HTML5播放MP4,因此甚至不需要Flash(但可以作为旧浏览器的后备方案)

正如pipwerks指出的那样,
swfobject.embedSWF
的arg[0]是数据,而不是电影文件,因此Flash player.swf需要放在那里(比如JWPlayer)。那么我们如何让它播放mp4呢?我们如何告诉它播放哪个文件?arg[6]将
flashvars
作为对象,因此可以将文件名输入为
file
属性,将海报图像输入为
image
属性。arg[7]将
params
作为对象

本质上,我们的代码类似于:

<script type="text/javascript">
  var params = {
    allowfullscreen: "true",
    allowscriptaccess: "always"
  };
  var flashvars = {
    file: "my_video.mp4",
    image: "video/my_video_poster.jpg"
  };
  swfobject.embedSWF("video/player.swf",
                     "demo_video_flash",
                     "400",
                     "326",
                     "10.0.0",
                     "video/expressInstall.swf",
                     flashvars,
                     params);
</script>

变量参数={
allowfullscreen:“真”,
allowscriptaccess:“始终”
};
var flashvars={
文件:“my_video.mp4”,
图片:“video/my_video_poster.jpg”
};
嵌入swf(“video/player.swf”,
“演示视频和flash”,
"400",
"326",
"10.0.0",
“video/expressInstall.swf”,
闪光灯,
参数);
理由如下:

0)Flash播放器swf的位置
1) 将由播放机替换的元素的ID
2) 视频宽度
3) 视频高度
4) 允许的闪存最低版本
5) expressInstall.swf-如果版本过期,Adobe会提示(见下文)
6) flashvars
7) 参数

生成的代码变成:

<object style="visibility: visible;" data="flash/player.swf" type="application/x-shockwave-flash" id="demo_video_flash" height="326" width="400">
  <param value="true" name="allowfullscreen" />
  <param value="always" name="allowscriptaccess" />
  <param value="file=my_video.mp4&image=video/my_video_poster.jpg" name="flashvars">
</object>

请注意,与SWFObject 1.5一样,
文件
属性(我们电影的文件名)与flash播放器的位置相关,而
图像
属性(海报图像)与HTML文件相关

arg[5]“expressInstall.swf”参数指向一个闪存文件,如果该文件过期,将触发提示用户更新其闪存版本。有关快速安装的更多信息:

swfobject.embedSWF
实际上需要10个参数;我不知道最后两个是什么

作为旁注:

虽然SWFObject 2.3经过更新以提供HTML5支持,并且不再使用
标记,而是使用
标记(参见下面的第二个链接了解基本原理),但它是一个Flash嵌入工具,而不是视频嵌入工具,因此不提供独立的“HTML5带Flash回退”支持(即,它不会编写
标记),JWPlayer 6和7以及其他版本附带的嵌入代码也是如此。HTML5视频支持必须明确处理,如本文所示:。
另见:


然而,SWFObject确实有一个优势,即它可以脱机使用,而且如果存在问题,也不会向任何实体发送数据。一些提供完整HTML5支持的玩家只能在线使用(例如,JWPlayer的完整支持版本)。

谢谢,这是很好的了解,JWPlayer使嵌入变得非常简单,而v6和v7提供完整HTML5支持(写入
视频
标记)的事实非常吸引人。对我来说唯一的问题是,提供HTML5支持的JWPlayer版本(不写
embed
tags)不能脱机使用,这是我需要的,而我觉得更私密的较低版本需要外部嵌入代码(如SWFobject)。SWFobject与视频无关,说它不支持视频是不公平的,因为它从未打算支持视频。SWFObject所做的就是通过向HTML文件写入
来嵌入SWF(而不是视频)。SWFObject不是视频嵌入工具。@pipwerks:编辑我的答案以澄清SWFObject的功能。
<script type="text/javascript">
  var params = {
    allowfullscreen: "true",
    allowscriptaccess: "always"
  };
  var flashvars = {
    file: "my_video.mp4",
    image: "video/my_video_poster.jpg"
  };
  swfobject.embedSWF("video/player.swf",
                     "demo_video_flash",
                     "400",
                     "326",
                     "10.0.0",
                     "video/expressInstall.swf",
                     flashvars,
                     params);
</script>
<object style="visibility: visible;" data="flash/player.swf" type="application/x-shockwave-flash" id="demo_video_flash" height="326" width="400">
  <param value="true" name="allowfullscreen" />
  <param value="always" name="allowscriptaccess" />
  <param value="file=my_video.mp4&image=video/my_video_poster.jpg" name="flashvars">
</object>