需要帮助控制iE8中的音频对象音量
Need help controlling audio object volume in iE8
我对此很在行,但我的.wav文件在Safari、Chrome、IE和FireFox中播放音效,甚至在需要时重叠,但我唯一的问题是无法在IE8中设置音量。它只是以与原始文件相同的音量播放。这是我的代码(我试过的东西都被注释掉了)。
this.load = function( audiofile )
{
var i;
for ( i=0; i<overlapMax; i++ )
{
var object = null;
if ( ie8 )
{
object = document.createElement('div');
var iesound = '';
// adding volume here didn't do anything
// iesound = iesound + '<object id="'+soundID+'track'+i+'" type="audio/x-wav" volume=2 data="'+audiofile+'" width="200" height="16">';
iesound = iesound + '<object id="'+soundID+'track'+i+'" type="audio/x-wav" data="'+audiofile+'" width="200" height="16">';
iesound = iesound + '<param name="src" value="'+audiofile+'" />';
iesound = iesound + '<param name="volume" value="2" />'; // adding volume here didn't do anything iesound = iesound + '<param name="autoplay" value="false" />'; iesound = iesound + '<param name="autostart" value="0" />'; iesound = iesound + '<param name="pluginurl" value="http://www.apple.com/quicktime/download/" />';
iesound = iesound + '</object>';
object.id = soundID+'track'+i+'div';
object.innerHTML = iesound;
object.style.visibility = 'hidden';
object.style.position = 'absolute';
object.style.left = '0px';
object.style.top = '0px';
}
else
{
object = document.createElement('audio');
object.setAttribute('id',soundID+'track'+i);
object.setAttribute('src',audiofile);
}
document.body.appendChild( object );
var newsound = document.getElementById(soundID+'track'+i);
// needs to be handled with a method & params
//
newsound.volume = 0.02; // this sets volume just fine for everything but ie8
tracks.push( newsound );
}
}
有些人会告诉你不,但你想知道如何做到这一点,这就是如何最好地实现在浏览器中播放音乐和声音的最广泛的跨浏览器实现。。。
首先,如果你想让它在所有浏览器中可靠地工作,这最终是一个Flash问题。
其次,永远不要使用微软专有的JScript innerHTML方法。它不注册DOM(这是人们使用JavaScript进行交互的浏览器接口)。将会发生的情况是,当你进入JavaScript的应用程序级别时,你将无法与作为一堆文本转储到DOM上的任何东西进行交互,这不是文本,而是一个应用程序。使用W3C兼容的方法,如appendChild、insertBefore等。在你停止使用innerHTML之前,你将无法可靠地完成任务,这将是一堵巨大的无形的墙。如果生活中的任何事情都很容易,每个人都会很快乐,以正确的方式做事,你会比其他做不到的人更有价值。坦率地说,如果你足够关心并从一开始就努力,以正确方式做事就会变得容易。
第三,您遇到了Internet Explorer错误。问题是,不幸的是,Internet Explorer需要一个name="movie"attribute="value"的param元素,并重复.swf路径。为什么?不幸的是,没有其他合乎逻辑的原因是InternetExplorer的工作方式。
您的对象元素应该是这样的。。。
<object class="left" data="mplayer.swf" style="min-height: 1px; min-width: 1px;" type="application/x-shockwave-flash">
<param name="movie" value="mplayer.swf" />
<param name="loop" value="false" />
<param name="play" value="false" />
<param name="wmode" value="transparent" />
<p>Alternative content, a link to download the Flash plugin in example.</p>
</object>
现在我注意到你正在使用wav文件,所以你需要记住,要想在没有Flash Internet Explorer(或任何其他浏览器)的情况下工作,完全取决于用户是否有一个插件来处理这种文件类型。这意味着类似于示例中的"快速时间"。这将使用户的体验对他们已经遇到的事情非常主观(如果他们不是很专业,身边没有任何(善意的)技术人员来帮助他们,通常会有很多垃圾)。
尽管我不喜欢提倡Flash,但不幸的是,真正获得一致的跨浏览器体验是必要的。由于微软是MPEG-LA许可证流氓集团的一部分,他们仍然不支持HTML5音频/视频元素(只有开放格式是可以接受的,它们必须开箱即用,而用户不必做任何事情来获得支持这些元素的资格),否则这是一家基于利润的公司。因此,音频/视频元素在2020年代甚至2030年代都不可靠(主要是由于微软对其产品的支持时间过长)。由于Flash的市场份额接近100%,我建议使用它,我有一个后续的例子来帮助你解决问题。。。
我建议你看看约翰·贝扎尼斯的Flash MP3播放器;http://www.bezzmedia.com/swfspot/samples/flash8/Mp3_Player_with_XML_Playlist
通过在启用音乐的情况下输入,您可以在我的网站上看到修改后的版本(请参阅我个人资料中的链接)。我基本上使用JavaScript来处理所有事情,在原始Flash对象中使用最少的Flash脚本。
我很乐意澄清你的任何需要。
- 如何设置音频对象的音量
- 为一个声音元素数组创建一个音频对象jquery,javascript
- 从PHP脚本获取音频文件时,更改JavaScript音频对象的当前时间
- 用javascript重放音频对象
- Android Chrome:音频对象需要很长时间才能开始流式传输mp3
- HTML5 音频对象无法在 iPad 上播放(从 setTimeout 调用时)
- 通过javascript下载音频对象
- 音频对象未在 IE10 中播放
- 音频对象未在移动设备的回调中播放
- 如何将淡入/淡出方法添加到 JS 音频对象
- 如何在页面中有一个jQuery播放器对象的多个实例(音频对象)
- 使用 JavaScript 代码创建音频对象
- Javascript音频对象onload事件
- 需要帮助控制iE8中的音频对象音量
- 克隆音频对象
- 动态创建的音频对象不能在Android Chrome浏览器中播放
- WebAudioAPI:将JS音频对象附加到
- 当在Javascript中创建太多音频对象时,浏览器会崩溃
- 如何使用html范围滑块更改音频对象的音量
- 如何改变Javascript音频对象src