hingis_fans
小狐狸
小狐狸
  • UID140
  • 注册日期2004-11-25
  • 最后登录2005-06-04
  • 发帖数42
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:14997回复:13

怎样用JavaScript控制embed内嵌音频的播放?

楼主#
更多 发布于:2005-01-17 00:35
好像不支持document.all.EmbedName.play()方式。要用什么对象和属性,或根本不支持?

事实上仅需要很简单的控制,播放和停止就行了。
hingis_fans
小狐狸
小狐狸
  • UID140
  • 注册日期2004-11-25
  • 最后登录2005-06-04
  • 发帖数42
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2005-01-17 00:35
又碰到一个严重的问题。就是不能赋值,在IE下就不能。

document.EmbedName.src 取值可以但
document.EmbedName.src="music name.wma" 赋值就不可以
hingis_fans
小狐狸
小狐狸
  • UID140
  • 注册日期2004-11-25
  • 最后登录2005-06-04
  • 发帖数42
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2005-01-17 00:35
没人回答看来基于壁虎引擎的浏览器压根就不想支持内嵌多媒体播放了。很讽刺壁虎引擎叫人不要用<对象>标签但自己又不支持embed标签的播放,IE引擎支持用 EmbedName.play();方式播放是的。

用了一另类方式适度解决了播放按钮问题。把播放器作为内嵌帧文件调用,这个帧宽高为65、22象素,在20到65象素正好有播放和停止按钮,在0到20象素有一段空白用带背景层覆盖,这样这个帧就只有二个按钮了。为什么叫适度,因为二个播放按钮界面无法按网页制作者要求调整的,这个界面随客户操作系统、播放器版本、使用的皮肤不同而不同。使用帧而不用层带来另一个好处就是由后台选曲时只要这个帧同服务器握手就行了,页面其他部分不变。

前台选曲问题也解决了,很遗憾不能用DHtml方式,功能会受到一些影响,可总比不能选曲好。
把整个播放器包在一个脚本里,而脚本是能给scr赋值的,最基本的如下:
var musicfile='your music file name.wma';
embed='<embed width="220" height="45" playCount="100" loop=-1 autostart=1 name="EmbedName" src="';
embed +=musicfile;
embed +='"></embed>';
document.write(embed);
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2005-01-17 00:35
你的逻辑真奇怪。
第一你问错了地方。你的问题里唯一和互联网标准相关的部分就是你使用document.all.EmbedName这种不标准的用法,但这应该不是你最想问的问题。至于插件内嵌方法的调用完全要看插件自己实现了没有,实现了就能调用,没实现就不能。就这么简单。你也不用在这里抱怨Gecko引擎。Gecko引擎实现插件内建方法调用的时候IE还不知道在哪呢。
你问的第二个问题,我不知道别人怎么看,反正我没看懂你在问什么?你期望Firefox和IE有一样的表现么?可你又说IE也不能。也搞不清楚你所说的不能赋值是什么意思,是赋值就报错还是赋值没起作用。怎么回答你?
最后,Gecko引擎绝对支持<object>,不支持的仅仅是微软将ClassID对应到一个ActiveX的做法。
Minisheep
小狐狸
小狐狸
  • UID2333
  • 注册日期2005-01-19
  • 最后登录2006-10-23
  • 发帖数80
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2005-01-17 00:35
标准的做法是
document.getElementByID(EmbedName)
而不是IE那不标准的
document.all
只要最到这样就一切OK
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2005-01-17 00:35
请注意他用的是name属性而不是id属性,你用getElementById是get不到的。
Minisheep:标准的做法是
document.getElementByID(EmbedName)
而不是IE那不标准的
document.all
只要最到这样就一切OK
回到原帖
hingis_fans
小狐狸
小狐狸
  • UID140
  • 注册日期2004-11-25
  • 最后登录2005-06-04
  • 发帖数42
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2005-01-17 00:35
to Minisheep:这种办法不行才问的。同标准写发或不标准写法无关。
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2005-01-17 00:35
目前realplay10和flash7对于Gecko引擎都支持内部方法在javascript中调用。不知道你具体用的是哪个plugin。
plugin的方法在js中调用的技术,在Gecko引擎中已经发展了三代了,第一代技术是netscape4.x中利用liveconnect来调用的技术,这个技术依赖于java,flash5就采用这个技术,它的plguin里带一个.class的java文件。第二代scriptable技术是基于xpcom的,目前的realplay10和flash6,7都是基于这个技术。最新的scriptable技术比第二代更灵活,是mozilla, apple, macromedia, sun, opera等等几个浏览器和plugin厂家联合搞出来的,去年年中刚刚发布技术规范,以后的plugin都会传向这个新的方式。
所以,在没有调查之前,最好不要随便说gecko引擎就不支持什么的话。
chen126
小狐狸
小狐狸
  • UID9031
  • 注册日期2005-10-02
  • 最后登录2005-10-02
  • 发帖数7
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
8楼#
发布于:2005-01-17 00:35
不管斑竹怎么说,我也没搞成功!
先支持一下楼主!!    


估计猫头鹰斑竹没看懂问题,我想是他没有做过相关问题的WEB应用了。

我明白楼主说的。

目前国内很多音乐站,这些站都连续播放功能,大家应该都见过,但我不知道哪位能实用firefox for linux听音乐。(真的,感觉这极具讽刺意义)

受音乐公园站长之邀,我给他的站点播放器做跨平台测试。

花了整整一下午时间,单播功能搞定了,思路很简单,判断客户端,如果是IE,则调用“<object”,如果是mozilla,则调用“<embed”,只能这样了。
演示页面见:http://6bb.com/MusicData/Play/12268.Html


然后就是连播页面,花了很多时间,能够实现播放,采用的方案如前面hingis_fans兄所述,不过我没有采用<iframe,而是直接通过后端JS控制了,思路差不多,也是通过“<embed”完成了。
但是作为连播功能,遇到的一个问题就是,由于代码里不能直接控制播放时间,造成不能判断状态,IE下可以对media object的状态进行判断,这在MSDN里有相关介绍。

如前面朋友叙述,我也不知道怎样在这种情况下控制播放状态。
示例页面见:http://6bb.com/play/?145692,145697,145700

劳烦斑竹指点一二了。
chen126
小狐狸
小狐狸
  • UID9031
  • 注册日期2005-10-02
  • 最后登录2005-10-02
  • 发帖数7
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
9楼#
发布于:2005-01-17 00:35
sorry,偶看了一下午代码,眼睛花了。

抱歉哈,是猫头猪斑竹,我看前两个字以为是猫头鹰呢。。。晕死了。

再次sorry...
gydoesit
小狐狸
小狐狸
  • UID659
  • 注册日期2004-12-08
  • 最后登录2005-09-14
  • 发帖数7
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
10楼#
发布于:2005-01-17 00:35
猫头猪版主,我发觉这儿的人大部分似乎并不关心如何放影音文件,更没有好的代码哟.
我问电影播放的帖子现在也没人理.

https://www.firefox.net.cn/newforum/viewtopic.php?t=8437
ydgi
火狐狸
火狐狸
  • UID2074
  • 注册日期2005-01-12
  • 最后登录2007-04-03
  • 发帖数166
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
11楼#
发布于:2005-01-17 00:35
Re: 不管斑竹怎么说,我也没搞成功!
刚刚找到如何通过脚本控制 flash plugins.

http://www.macromedia.com/support/flash ... html/pla7/

QuickTime的:
http://developer.apple.com/documentatio ... TP40001526
chen126
小狐狸
小狐狸
  • UID9031
  • 注册日期2005-10-02
  • 最后登录2005-10-02
  • 发帖数7
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
12楼#
发布于:2005-01-17 00:35
回楼上哥们~
Flash pugins有Macromedia支持。。。。

QuickTime有Apple撑腰。。。

wma是M$提出来的,基于LINUX版本要完美实现,恐怕,有点难。。。
hingis_fans
小狐狸
小狐狸
  • UID140
  • 注册日期2004-11-25
  • 最后登录2005-06-04
  • 发帖数42
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
13楼#
发布于:2005-01-17 00:35
chen126 握握手。

的确最难解决的就是连播问题。自己写的代码现在只能做到安装了mozactivex这个插件以后可以连播,不安装则不行。

今年初写代码时原想以火狐为主兼容IE,呵呵年底以失败告终,重新回到以IE为主兼容火狐。
游客

返回顶部