GreaseMonkey + Youtube + .click()

GreaseMonkey + Youtube + .click()

目标:加载 YouTube 播放列表,然后 GreaseMonkey click()点击 "shuffle playlist" 按钮。

我可以在我的控制台中直接 运行 这两行并且它完美地工作:

var shuffleBtn = document.querySelector(".yt-uix-button.shuffle-playlist");
shuffleBtn.click();

但是,当我尝试将其移至 GreaseMonkday 时,它不再有效。 下面代码中的 console.log 执行 运行-- 并且(注释掉的)remove() 有效,但是 click() 不会触发。我也试过 method outlined here,没有 jQuery 位,但也没有运气。

我错过了什么?

// ==UserScript==
// @name        YouTube - Randomize Playlist
// @namespace   ytplaylistrandom
// @include     https://www.youtube.com/watch?v=yyDUC1LUXSU&list=PLh6vppUwmWEMdp04u-tYABoDmgn9AX12n
// @version     1
// @grant       none
// ==/UserScript==

window.onload = function () {
    var shuffleBtn = document.querySelector(".yt-uix-button.shuffle-playlist");
    if( shuffleBtn ){
      console.log('exists');
      shuffleBtn.click();
      //shuffleBtn.remove();
      console.log('end');
    }else {
      console.log('nobutton');
    }
}

我想我明白了:

使用window.addEventListener("load", function(){})代替window.onload = function(){}.

window 似乎已经有一个 onload 函数来初始化随机播放按钮的功能,脚本正在 覆盖 它。