gpt4 book ai didi

javascript - IE8 HTMLMediaElement play() 垫片

转载 作者:搜寻专家 更新时间:2023-10-31 21:49:58 25 4
gpt4 key购买 nike

以下代码在 IE9+(以及 Firefox 和 Chrome)中播放声音。是否有一个库可以为 IE8 实现/填充缺失的功能(audio 元素和 play() 方法)?

我做不到mediaelement.js工作,并使用 jQuery 或放置 <object>里面<audio>看起来很丑。一些全局初始化(比如 shim.init(somepath))让 shim 找到它的 flash 文件是好的,但我认为每个标签的代码看起来不对,因为它应该可以自动化。

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function foo()
{
var audio = document.getElementById('foo')
audio.play()
}

</script>
</head>
<body>
<audio id="foo" preload="none">
<source src="foo.mp3" type="audio/mpeg">
<source src="foo.ogg" type="audio/ogg">
Your browser does not support the audio element.
</audio>
<button onclick="foo()">Play</button>
</body>
</html>

最佳答案

你可以使 MEJS 工作而不需要额外的库(除了 jQuery)或 IE[7-8] 中的 polyfills,也不需要在 audio 标签中添加 object 标签.

解决方法是在 success 设置中创建一个 global 对象,IE 可以在使用 .play() 之前使用它( ... 或 .pause() ) 方法

所以,有了这个简单的 html

<audio id="myAudioPlayer" src="media/audio.mp3" preload="none"></audio>

<button onclick="audioPlay();">Play</button>
<button onclick="audioPause();">Pause</button> <!-- optional -->

你可以使用这段代码:

var audio; // global object to be used by IE (and all browsers as a matter of fact)
var isPlaying = false; // flag for event listeners

function audioPlay() {
// only call play() method if audio is not playing
// avoids multiple playbacks in IE
if (!isPlaying) {
audio.play();
isPlaying = true;
}
};

function audioPause() {
// only call pause() method if audio is playing
if (isPlaying) {
audio.pause();
isPlaying = false;
}
};

jQuery(document).ready(function ($) {
var player = new MediaElementPlayer("#myAudioPlayer", {
success: function (mediaElement, domObject) {
audio = mediaElement; // set value to global object to be used outside the success setting by IE
// event listeners so we only call our functions when needed
audio.addEventListener('playing', function () {
isPlaying = true;
}, false);
audio.addEventListener('pause', function () {
isPlaying = false;
}, false);
}
});
}); // ready

注意我们添加了几个事件监听器,因此我们只在需要时调用我们的方法(并避免在 IE 中多次播放)

参见 JSFIDDLE

注意

此代码用于 audio 元素。 Video 元素可能需要其他解决方法。

关于javascript - IE8 HTMLMediaElement play() 垫片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23990870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com