资讯专栏INFORMATION COLUMN

JavaScript HTML5脚本编程——“媒体元素”的注意要点

baoxl / 3447人阅读

摘要:事件除了大量属性之外,这两个媒体元素还可以触发很多事件。下表列出了媒体元素相关的事件。这两个媒体元素都有一个方法,该方法接收一种格式编解码器字符串,返回或空字符串。

audio和video元素的用法如下:

</>复制代码

因为并非所有浏览器都支持所有媒体格式,所以可以指定多个不同的媒体来源。为此,不用在标签中指定src属性,而是要像下面这样使用一或多个元素。

</>复制代码

  1. Video player not available.
  2. Audio player not available.
属性

点击这里查询video标签接口的兼容性

下表列出了这两个元素共有的属性,通过这些属性可以知道媒体的当前状态。

事件

除了大量属性之外,这两个媒体元素还可以触发很多事件。这些事件监控着不同的属性的变化,这些变化可能是媒体播放的结果,也可能是用户操作播放器的结果。下表列出了媒体元素相关的事件。

自定义媒体播放器

DOM部分:

</>复制代码

  1. Video player not available.
  2. 0/0

js部分:

</>复制代码

  1. var player = document.getElementById("player"),
  2. btn = document.getElementById("video-btn"),
  3. curtime = document.getElementById("curtime"),
  4. duration = document.getElementById("duration");
  5. btn.onclick = function() {
  6. if (player.paused) {
  7. player.play();
  8. btn.value = "Pause";
  9. duration.innerHTML = player.duration;
  10. } else {
  11. player.pause();
  12. btn.value = "Play";
  13. }
  14. };
  15. player.onended = function() {
  16. btn.value = "Play";
  17. };

</>复制代码

  1. var x = setTimeout(function timing() {
  2. curtime.innerHTML = player.currentTime;
  3. var y = setTimeout(timing, 100);
  4. y = null;
  5. }, 100);
  6. x = null;
检测编码器的支持情况

有一个JavaScript API能够检测浏览器是否支持某种格式和编解码器。这两个媒体元素都有一个

canPlayType()方法,该方法接收一种格式/编解码器字符串,返回"probably"、"maybe"或""( 空字符串)。

空字符串是假值,因此可以像下面这样在if语句中使用canPlayType():

</>复制代码

  1. if (audio.canPlayType("audio/mpeg")){
  2. //进一步处理
  3. }

canPlayType()传入了一种MIME类型,则返回值很可能是"maybe"或空字符串。这是因为媒体文件本身只不过是音频或视频的一个容器,而真正决定文件能否播放的还是编码的格式。在同时传入MIME类型和编解码器的情况下,可能性就会增加,返回的字符串会变成"probably"。下面来看几个例子。

</>复制代码

  1. var audio = document.getElementById("audio-player");
  2. //很可能"maybe"
  3. if (audio.canPlayType("audio/mpeg")){
  4. //进一步处理
  5. }
  6. //可能是"probably"
  7. if (audio.canPlayType("audio/ogg; codecs="vorbis"")){
  8. //进一步处理
  9. }

注意,编解码器必须用引号引起来才行。下表列出了已知的已得到支持的音频格式和编解码器。

Audio类型

原生的JavaScript构造函数Audio,可以在任何时候播放音频。

</>复制代码

  1. var audio = new Audio("lalala.mp3");
  2. audio.autoplay = true;
  3. audio.loop = true;

创建新的Audio实例即可开始下载指定的文件。下载完成后,调用play()就可以播放音频。 在iOS中,调用play()时会弹出一个对话框,得到用户的许可后才能播放声音。如果想在一段音频播放后再播放另一段音频,必须在onfinish事件处理程序中调用play()方法。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78688.html

相关文章

  • JavaScript HTML5脚本编程——“历史状态管理”注意要点

    摘要:历史状态管理是现代应用开发中的一个难点。通过更新对象为管理历史状态提供了方便。而通过状态管理,能够在不加载新页面的情况下改变浏览器的。在和中,传递给或的状态对象中不能包含元素。还支持一个属性,它返回当前状态的状态对象。 历史状态管理是现代Web应用开发中的一个难点。在现代Web应用中,用户的每次操作不一定会打开一个全新的页面,因此后退和前进按钮也就失去了作用,导致用户很难在不同状态间切...

    Rainie 评论0 收藏0
  • JavaScript HTML5脚本编程——“跨文档消息传递”注意要点

    摘要:跨文档消息传送,有时候也简称为,指的是来自不同域的页面间传递消息。接收到消息时,会触发对象的事件。接受到消息后验证发送窗口的来源是至关重要的。基本的检测模式如下。 跨文档消息传送(cross-document messaging),有时候也简称为XDM,指的是来自不同域的页面间传递消息。例如,www.wrox.com域中的一个页面与一个位于内嵌框架中的p2p.wrox.com域中的页面...

    TerryCai 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<