如何在网站上播放通知声音?

当某个事件发生时,我希望我的网站向用户播放短暂的通知声音。

当网站打开时,声音不应该自动启动(即时)。 相反,它应该通过JavaScript(当发生某些事件时)按需播放。

重要的是,这也适用于旧的浏览器(IE6等)。

所以,基本上有两个问题:

  1. 我应该使用什么编解码器?
  2. embeddedaudio文件的最佳做法是什么? ( <embed> vs <object> vs. Flash vs. <audio>

我发现了一个非常优雅的解决scheme,可以在几乎所有的浏览器上工作(即使没有安装Flash)。

我在Chrome,Safari,Firefox,Opera和IE6上testing过。

它是新型浏览器的HTML5 <audio>标签和旧版浏览器的<embed>标签的后备:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>Audio test</title> <script type="text/javascript"> /** * @param {string} filename The name of the file WITHOUT ending */ function playSound(filename){ document.getElementById("sound").innerHTML='<audio autoplay="autoplay"><source src="' + filename + '.mp3" type="audio/mpeg" /><source src="' + filename + '.ogg" type="audio/ogg" /><embed hidden="true" autostart="true" loop="false" src="' + filename +'.mp3" /></audio>'; } </script> </head> <body> <!-- Will try to play bing.mp3 or bing.ogg (depends on browser compatibility) --> <button onclick="playSound('bing');">Play</button> <div id="sound"></div> </body> </html> 

作为编解码器,我使用MP3,Chrome,Safari和IE。 对于Firefox和Opera,我使用了OGG。

到2016年,以下就足够了(你甚至不需要embedded):

 var audio = new Audio('/path/to/audio/file.mp3'); audio.play(); 

在这里看到更多。

还有一个插件,在网站上播放通知声音: Ion.Sound

  • 基本演示
  • 高级演示
  • Ion.Sound GitHub页面

优点:

  • JavaScript插件,用于播放基于Web Audio API的声音并回退到HTML5 Audio。
  • 插件正在处理大多数stream行的桌面和移动浏览器,可以在任何地方使用,从常见的网站到浏览器游戏。
  • 包括audio精灵支持。
  • 没有依赖(jQuery不需要)。
  • 包括25个免费的声音。

设置插件:

 // set up config ion.sound({ sounds: [ { name: "my_cool_sound" }, { name: "notify_sound", volume: 0.2 }, { name: "alert_sound", volume: 0.3, preload: false } ], volume: 0.5, path: "sounds/", preload: true }); // And play sound! ion.sound.play("my_cool_sound"); 

雅虎的媒体播放器如何embedded雅虎的图书馆

 <script type="text/javascript" src="http://mediaplayer.yahoo.com/js"></script> 

并使用它

 <a id="beep" href="song.mp3">Play Song</a> 

自动启动

 $(function() { $("#beep").click(); }); 

玩跨浏览器兼容的通知

正如@Tim Tisdall从这篇文章中提出的,请检查Howler.js插件。

像Chrome这样的浏览器在最小化或不活动时禁止javascript执行,以提高性能 。 但是,即使浏览器处于非活动状态或用户最小化,也会播放通知声音。

  var sound =new Howl({ src: ['../sounds/rings.mp3','../sounds/rings.wav','../sounds/rings.ogg', '../sounds/rings.aiff'], autoplay: true, loop: true }); sound.play(); 

希望有助于某人。

<audio>标签的audio.js用作填充 ,并使用fallback进行闪光。

一般来说,请查看https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills,了解polyfill的HTML 5 API( 包括更多<audio> polyfills

 var audio = new Audio('audio_file.mp3'); function post() { var tval=document.getElementById("mess").value; var inhtml=document.getElementById("chat_div"); inhtml.innerHTML=inhtml.innerHTML+"<p class='me'>Me:-"+tval+"</p>"; inhtml.innerHTML=inhtml.innerHTML+"<p class='demo'>Demo:-Hi! how are you</p>"; audio.play(); } 

这个代码是从talkerscode完整的教程访问http://talkerscode.com/webtricks/play-sound-on-notification-using-javascript-and-php.php