YouTube iframe API未捕获TypeError

时间:2017-10-06 00:21:13

标签: javascript jquery iframe youtube-api

我遇到了一个令人困惑的问题。一切都工作得很好,突然间我开始收到这个错误:

Uncaught TypeError: playervid.isMuted is not a function

如果有人能提供帮助,我们将不胜感激。

这是代码

// 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');

tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

jQuery.noConflict()(function($) {

// 3. This function creates an <iframe> (and YouTube player)
//    after the API code downloads.
var playervid;

function onYouTubeIframeAPIReady() {
  playervid = new YT.Player('playervid', {
    height: "720",
    width: "1280",
    videoId: 'JNsFY9Hr-OU',
    playerVars: { 'autoplay': 1, 'showinfo': 0, 'controls': 0, 'autohide': 1, 'rel': 0, 'wmode': 'transparent'},
    events: {
      'onReady': initialize,
      'onStateChange': onPlayerStateChange
    }
  });

}

function initialize(event){
    event.target.mute();
}

$('body').on('click', '#mute-toggle', function(event) {

var mute_toggle = $(this);
if(playervid.isMuted()){
  playervid.unMute();
  mute_toggle.html('<i class="fa fa-volume-up fa-2x" aria-hidden="true"></i>');
  $('.video-container iframe').removeClass('blur');
}
else{
  playervid.mute();
  mute_toggle.html('<i class="fa fa-volume-up fa-2x muted" aria-hidden="true"></i>');
  $('.video-container iframe').addClass('blur');
}
}

当用户点击#mute-toggle按钮时,我收到错误。

1 个答案:

答案 0 :(得分:0)

修正了它。原来我正在使用的主题“Divi”运行了一个更新,现在运行一些javascript,当你选择菜单栏的透明背景,这是影响API。我在setTimeout函数中将调用包装到API中,然后它再次开始工作。