2016-03-30 4 views
1

ゴール:YouTubeプレイリストを読み込み、GreaseMonkey click()の「シャッフルプレイリスト」ボタンをクリックします。GreaseMonkey + Youtube + .click()

私はまっすぐ私のコンソールでこれらの2つの行を実行することはできませんし、それが完璧に動作します:

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

私はそれを少しテストしました...プログラムのクリックがGreaseMonkeyでブロックされていないので、実際にはうまくいくはずです。私はボタンが適切に初期化されていないかもしれないと思っていましたが、 'setTimeout'を介して実行が遅延しても動作していないようです。 – Xufox

+0

ユーザスクリプトが実行されると、シャッフルボタンは2つの 'click'イベントリスナの1つを「失う」ようです:[スクリプトなしの2つのイベントリスナがあります](http://i.stack.imgur.com/1vsZF .png)ですが、[イベントリスナーは1つしかスクリプトなし](http://i.stack.imgur.com/YXgu5.png)です。 – Xufox

+0

ええ、私は 'setTimeout'と' .trigger( 'click') 'で試してみましたが、* jQueryで全部試しました... – frogg3862

答えて

0

私はそれを得たと思う:

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

windowが既にシャッフルボタンの機能を初期化し、スクリプトがにそれをオーバーライドあるonload機能を持っているようです。

+0

これはうまくいきました!明確にするために、私はまだ 'setTimeout'でそれをラップしなければなりませんでした – frogg3862

+0

@ frogg3862それは本当に奇妙です...それはそれなしで私のために働いた。 – Xufox

+0

また、プレイリストループを作成するために 'click()'を '.toggle-loop'に追加し、次の曲に移動する' .ytp-next-button'( "ランダム化"を開始) – frogg3862