2016-03-30 26 views
1

Hedef: Bir YouTube oynatma listesi yüklüyorum, ardından GreaseMonkey click() s "shuffle playlist" düğmesi.GreaseMonkey + Youtube + .click()

Doğruca benim konsolunda Bu iki satır çalıştırabilir ve mükemmel çalışıyor: Ben GreaseMonkday içine taşımak için çalıştı

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

Ancak, artık çalışır. aşağıdaki kodu console.log 'ın çalıştırabilirim - ve (yorumlandı) remove() eser, ama click() will değil tetik. Ayrıca, method outlined here'u da denedim, jQuery bitlerini sayardım, ancak şans da yok.

Neyi eksik?

// ==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'); 
    } 
} 
+1

Biraz test ettim… aslında programlı tıklama GreaseMonkey'de engellenmediği için çalışmalıdır (bunu çok defa yaptım). Düğmenin düzgün bir şekilde başlatılmamış olabileceğini düşündüm, ancak “setTimeout” ile gecikmiş bir uygulamada bile işe yaramadı. – Xufox

+0

Kullanıcı betiği yürütüldüğünde, shuffle düğmesi iki 'click' olay dinleyicisinden birini“ kaybeder ”: [script olmadan iki olay dinleyicisi vardır] (http://i.stack.imgur.com/1vsZF .png), ancak [yalnızca bir olay dinleyicisi _with_ betiği] (http://i.stack.imgur.com/YXgu5.png). – Xufox

+0

Evet, bir 'setTimeout' ile de denedim-- ve '.trigger ('click')' - ve * jQuery ile her şeyi denedim ... – frogg3862

cevap

0

Anladım düşünüyorum:

Kullanım window.addEventListener("load", function(){ ... }) yerine window.onload = function(){ ... }.

O window zaten shuffle düğmesinin işlevi başlatır bir onload işlevi vardır görünüyor ve komut ağır basan kadar.

+0

Bu işe yaradı, teşekkürler! Açık olmak gerekirse, hala bir 'setTimeout' – frogg3862

+0

@ frogg3862 içinde sarmak zorunda kaldım. Bu gerçekten garip… onsuz benim için çalıştı. – Xufox

+0

Ayrıca çalma listesi döngüsünü yapmak için '.toggle-loop'' ve bir sonraki şarkıya geçmek için '.ytp-next-button'' '' '' '' '' '' '' '] – frogg3862