【问题标题】:javascript/youtube api check state for playback restrictionsjavascript/youtube api 检查播放限制的状态
【发布时间】:2014-12-13 08:30:17
【问题描述】:

javascript/youtube api 检查播放限制状态


问题是我从 gdata/youtube-api 嵌入,有时它会返回播放 视频限制或不允许嵌入。所以我在检查一个状态或什么 来处理这个。我尝试添加 &format=5。 & 尝试了 -1 事件。 没有运气。任何想法将不胜感激。 function onPlayerStateChange(event) { if(event.data == -1){//其余代码}} 提前致谢。

Edit3/此问题的解决方案:因为您将 onError 设置为该函数中的函数 捕获事件并检查错误是解决此问题的方法。 function onPlayerError(event) {if(event.data === 150 || event.data === 101) {//rest here}}

编辑:添加更多代码。 编辑2:错误代码匹配是答案现在唯一的问题是我不 知道如何只捕获错误代码有什么想法吗?

<iframe id="player" type="text/html" width="560" height="50" src="'.$striphttp.'"></iframe>



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

  var player;
  function onYouTubePlayerAPIReady() {
    player = new YT.Player('player', {
      playerVars: { 'autoplay': 1, 'controls': 1,'autohide':1,'wmode':'opaque' },
      //videoId: 'JW5meKfy3fY',
      events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange,
        'onError': onPlayerError
      }
    });
  }

  function onPlayerError(event) {
  window.location.href = "#";

  }


  function onPlayerReady(event) { 
    //event.target.mute();
  }

  function onPlayerStateChange(event) {
    if(event.data == 0) {
            window.location.href = "#";
            //location.reload();
    }

}

【问题讨论】:

    标签: javascript youtube youtube-api youtube-javascript-api


    【解决方案1】:

    您可以在尝试嵌入之前加载有关视频的 json 数据并检查限制:

    var xmlhttp = new XMLHttpRequest();
    var url = 'http://gdata.youtube.com/feeds/api/videos?v=2&alt=jsonc&q=TJC-subagTg';
    
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            var response = JSON.parse(xmlhttp.responseText);
            console.log(response.data.items[0].accessControl);
            console.log(response.data.items[0].restrictions);
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
    

    http://embed.plnkr.co/P6LqDCdPgTH0HiU3SReR/preview

    【讨论】:

    • 我通过 php 解析 json 数据,同时通过 javascript/iframe(embed) 处理播放器端。我确实有一个 playerReady 功能,所以我可以通过这种方式检查限制和访问控制。正如您在已设置的函数中所建议的那样。
    • 我必须查看您的代码才能进一步提供帮助。您在原始帖子中发布的示例不足以让我离开。
    • 我添加了更多代码,以便您查看我正在使用的内容。
    • 如果您已经在服务器端 (PHP) 加载 JSON,我会在那里进行限制检查,并阻止任何嵌入的 javascript 在符合您的条件时为该特定视频执行。跨度>
    • 确实读到它在所有受限制的等上捕获了 150 的错误,我做了一个 onError: onPlayerError 然后 ifcheck on errorCode == 150 但它没有触发所以我想我不是正确设置错误检查。有什么想法吗?
    猜你喜欢
    • 2013-11-09
    • 2011-08-05
    • 2017-08-19
    • 1970-01-01
    • 2015-01-11
    • 2012-12-09
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多