Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

IE中播放声音的问题

  在支持HTML5的浏览器中通常使用AUDIO元素来播放声音,但要是都能用HTML5也还好,关键是要做低版本IE的兼容时,就不得不改用传统的ActiveXObject来实现,其实这个方法也适合用于高版本IE,至少IE对它的支持比对HTML5的支持要正常一些。
  微软总是在做一些奇怪的让人猜不透的事情,IE的AUDIO元素居然不能兼容微软自己的WAV格式,其它浏览器却反而都支持。IE的AUDIO元素对媒体格式的支持实在是太非主流了,所以即使是IE9+,HTML5有时候反而不如古老的ActiveXObject好用。
  我们可以用WMPlayer.OCX这个控件来播放声音,它在windows中是默认安装默认启用的,所以直接创建它就行。但是存在一个WMP控件强制弹窗漏洞,所以它可能被杀毒软件干掉。不过只是用来播放声音的话应该是没什么问题的。 var wmp=new ActiveXObject("WMPlayer.OCX");
wmp.settings.volume=100; //音量,其实不设置也可以,默认50%
document.onclick=function(){
  //给url赋值时就会播放,因为autoStart默认设置为true
  wmp.url="http://www.web-tinker.com/images/coin.wav";
};
  这样在点击文档时就能播放声音了,但是这个控件还有一个非常纠结的URL问题。这里直接使用了绝对路径,所以看不出有什么问题。但是如果使用相对路径就很纠结,因为它并不相对于页面,而是相对于网站根目录,并且不以“/”开头。正常以网站根目录开始的路径都需要以“/”开头吧,但是这个相对URL如果使用这个开头就反而无法找到。
  比如页面和资源文件是这样的目录结构存放的 http://域名/test/test.html
http://域名/test/test.wav
  这时url不能直接用同目录的写法也不能用根目录的写法 wmp.url="test.wav"; //无法解析
wmp.url="/test/test.wav"; //无法解析
  必须用根目录相对路径或者直接使用完整URL。 wmp.url="test/test.wav"; //正常解析
wmp.url="http://域名/test/test.wav"; //正常解析
  这个URL问题是它最纠结的问题,这个问题解决了剩下的就是基本设置,那就没啥可说的了。其实我觉得对IE用Flash来做播放器会更好一些,至少比这个组件安全,虽然要偷懒的话直接使用这个就可以了= =。
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^