GreaseMonkey + Youtube + .click()

GreaseMonkey + Youtube + .click()

本文关键字:Youtube GreaseMonkey click      更新时间:2023-09-26

目标:我加载一个YouTube播放列表,然后GreaseMonkey click()的"shuffle playlist"按钮。

我可以在控制台中直接运行这两条线,它运行得很好:

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

然而,当我试图把它搬到GreaseMonkday时,它已经不起作用了。下面代码中的console.log确实运行——并且(注释掉的)remove()可以工作,但click()不会触发。我也尝试过这里概述的方法,没有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函数,它初始化了shuffle按钮的功能,并且脚本正在覆盖它。