Javascript GreaseMonkey+;Youtube+。单击()
目标:我加载一个YouTube播放列表,然后GreaseMonkeyJavascript GreaseMonkey+;Youtube+。单击(),javascript,youtube,click,greasemonkey,Javascript,Youtube,Click,Greasemonkey,目标:我加载一个YouTube播放列表,然后GreaseMonkey单击()s“无序播放列表”按钮 我可以在我的控制台中直接运行这两条线路,它工作得非常完美: var shuffleBtn = document.querySelector(".yt-uix-button.shuffle-playlist"); shuffleBtn.click(); 然而,当我尝试将它移动到GreaseMonkday时,它不再工作。 下面代码中的console.log确实会运行,并且(注释掉的)remove()
单击()
s“无序播放列表”按钮
我可以在我的控制台中直接运行这两条线路,它工作得非常完美:
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(“加载”,function(){
..})
而不是window.onload=function(){
..}
似乎窗口
已经有了一个onload
函数,它初始化了shuffle按钮的功能,脚本正在覆盖它。我想我得到了它:
使用window.addEventListener(“加载”,function(){
..})
而不是window.onload=function(){
..}
似乎
窗口
已经有了一个onload
函数,它初始化了shuffle按钮的功能,脚本正在覆盖它。我已经对它进行了一点测试……它实际上应该可以工作,因为在GreaseMonkey中编程点击并没有被阻止(我已经做了很多次)。我想,可能按钮没有正确初始化,但即使通过setTimeout
延迟执行,它似乎也不起作用。当用户脚本执行时,洗牌按钮“丢失”了它的两个click
事件侦听器中的一个:,但是。是的,我也用setTimeout
尝试过它——和.trigger('click')
——并用jQuery尝试了整个过程……我已经测试了一点……它应该可以工作,因为程序化的点击在GreaseMonkey中没有被阻止(我已经做了很多次)。我想,可能按钮没有正确初始化,但即使通过setTimeout
延迟执行,它似乎也不起作用。当用户脚本执行时,洗牌按钮“丢失”了它的两个click
事件侦听器中的一个:,但是。是的,我也用setTimeout
试过了——还有.trigger('click')
——并且用jQuery试过了整个过程……很有效,谢谢!为了清楚起见,我仍然必须用setTimeout
@frogg3862来包装它,这真的很奇怪……没有它对我来说很有效。我还添加了click()
s到。toggle loop
来制作播放列表循环,以及.ytp next按钮
来继续下一首歌(启动“随机化”),谢谢!为了清楚起见,我仍然必须将它包装在一个setTimeout
@frogg3862中,这真的很奇怪……没有它,它对我来说很有效。我还将click()
s添加到。切换循环
,使播放列表循环-.ytp下一步按钮
移动到下一首歌曲(启动“随机化”)