Javascript条件不适用于音频检查
所以我一直在关注这个问题有一段时间了。下面的代码查看视频,并确定它是实际播放声音,还是只是静音。如果它是静默的,我想循环它,使它基本上像GIF一样工作 控制台准确记录声音检查。我一直在检查 但下一位代码(将循环应用于视频)无论如何都会运行。它用声音循环视频,我不知道为什么Javascript条件不适用于音频检查,javascript,html,video,Javascript,Html,Video,所以我一直在关注这个问题有一段时间了。下面的代码查看视频,并确定它是实际播放声音,还是只是静音。如果它是静默的,我想循环它,使它基本上像GIF一样工作 控制台准确记录声音检查。我一直在检查 但下一位代码(将循环应用于视频)无论如何都会运行。它用声音循环视频,我不知道为什么 <script type="text/javascript"> document.getElementById("my-video_html5_api").addEventListener("loadeddata
<script type="text/javascript">
document.getElementById("my-video_html5_api").addEventListener("loadeddata", function() {
if (typeof this.webkitAudioDecodedByteCount !== "undefined") {
// non-zero if video has audio track
if (this.webkitAudioDecodedByteCount > 0)
console.log("video has audio");
else
console.log("video doesn't have audio");
var vid = document.getElementById("my-video_html5_api");
vid.loop = true;
}
else if (typeof this.mozHasAudio !== "undefined") {
// true if video has audio track
if (this.mozHasAudio)
console.log("video has audio");
else
console.log("video doesn't have audio");
var vid = document.getElementById("my-video_html5_api");
vid.loop = true;
}
else
console.log("can't tell if video has audio");
});
</script>
document.getElementById(“my-video_html5_api”).addEventListener(“loadeddata”,function()){
if(this.webkitAudioDecodedByteCount的类型!=“未定义”){
//如果视频有音频曲目,则为非零
如果(this.webkitAudioDecodedByteCount>0)
log(“视频有音频”);
其他的
log(“视频没有音频”);
var vid=document.getElementById(“my-video_html5_api”);
vid.loop=true;
}
else if(this.mozasAudio的类型!=“未定义”){
//如果视频有音频曲目,则为true
if(this.mozHasAudio)
log(“视频有音频”);
其他的
log(“视频没有音频”);
var vid=document.getElementById(“my-video_html5_api”);
vid.loop=true;
}
其他的
log(“无法判断视频是否有音频”);
});
有什么帮助吗?修理你的牙套。每个“if”和“else”结果都需要用大括号括起来
从技术上讲,单线区块不会,但这是一种良好的做法。必须包装多个线块,否则将对其求值。特别是,我看到了几个不在大括号中的
vid.loop=true
行 如果仅当this.mozHasAudio
为false时才打算执行var.loop=true
,则需要将块用大括号括起来:{}
以当前形式,console.log后面的行始终运行。Welp。。。那很容易。非常感谢。