YouTube视频更改上的Javascript

时间:2016-10-01 00:57:57

标签: javascript youtube

好吧,我是一名SQL程序员,但是我试图弄清楚一个(据说)简单的关键步骤javascript,从其他很多例子中拼凑而成。

基本上,我想要检查当前的视频用户是否有一个" good"用户。如果在列表中找到它们,没问题;如果他们不是,那么将页面重定向回youtube.com。我有脚本处理第一个视频播放,但当通过链接选择另一个视频时,文档对象似乎没有加载或getElementByClassName没有找到任何内容并返回" undefined&#34 ;。

到目前为止,这是完整的GreaseMonkey脚本:

// ==UserScript==
// @name        YouTube Limit To Users
// @namespace   http://userscripts.org/users/23652
// @include     https://www.youtube.com/watch
// @version     1
// @grant       GM_getValue
// @grant       GM_setValue
// ==/UserScript==

var goodYoutubers=["Sqaishey Quack", "Graser10", "Good Mythical Morning"]; 

window.onload = DoCheckForUser();

function youtubePageChange()
{
    DoCheckForUser();
    $('body').on('transitionend', function(event)
    {
    if (event.target.id != 'progress') return false;
    DoCheckForUser();
    });
}

$(youtubePageChange);

function DoCheckForUser () {
  var y = document.getElementsByClassName('yt-user-info');
  var aNode = y[0];  //<<< this goes "undefined"
  var currentUser = aNode.textContent.trim();
  alert(currentUser);

  var indexUser = goodYoutubers.indexOf(currentUser);
  if (indexUser < 0)
    {
      alert(currentUser + " is NOT an approved YouTuber!");
      window.location = "http://www.youtube.com";
    }
  else
    {
      alert(currentUser + " is an approved YouTuber!");
    }
}

1 个答案:

答案 0 :(得分:0)

后台脚本中的

window.addEventListener("spfdone", process); // old youtube design
window.addEventListener("yt-navigate-start", process); // new youtube design
document.addEventListener("DOMContentLoaded", process); // one-time early processing
window.addEventListener("load", process); // one-time late postprocessing