【发布时间】:2025-11-28 20:15:02
【问题描述】:
目标:我加载一个 YouTube 播放列表,然后 GreaseMonkey click()s “随机播放列表”按钮。
我可以在我的控制台中直接运行这两行代码,而且效果很好:
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');
}
}
【问题讨论】:
-
我已经对其进行了一些测试......它应该确实可以工作,因为在 GreaseMonkey 中不会阻止程序化点击(我已经做过很多次了)。我想,也许按钮没有正确初始化,但即使通过
setTimeout延迟执行,它似乎也不起作用。 -
似乎当用户脚本执行时,随机播放按钮“丢失”了它的两个
click事件监听器之一:there are two event listeners without the script,但 only one event listener with the script。 -
是的,我也用
setTimeout和.trigger('click')尝试过,并尝试了整个过程用 jQuery...
标签: javascript youtube click greasemonkey