回答編集履歴

4

情報追加

2021/02/05 09:01

投稿

eneko0513
eneko0513

スコア349

test CHANGED
@@ -48,11 +48,13 @@
48
48
 
49
49
  恐らく主さんが想像しているようなこととはちょっと違う結果になると思います。
50
50
 
51
- (プレイヤーは消えるが音声は再生されたまま)
51
+ (プレイヤーは消えるが音声は再生されたまま)
52
+
53
+ あとはホワイトリストにかからない動画を見る→ホワイトリストの動画を見る(そうするとプレイヤー領域が消えたままで、リロードをすると直る)これはYoutubeのページが非同期で画面を生成するような仕組みのため起きます。
52
54
 
53
55
 
54
56
 
55
- ここをどうするかはちょっとご自身で考えて工夫してみてください、多分実現はできると思います。
57
+ のようにいくつか課題がありますが、をどうするかはちょっとご自身で考えて工夫してみてください、多分実現はできると思います。
56
58
 
57
59
  例えばブラウザバックに変えるとか、別のアプローチもできるんじゃないかなと。
58
60
 

3

情報追加

2021/02/05 09:01

投稿

eneko0513
eneko0513

スコア349

test CHANGED
@@ -23,3 +23,161 @@
23
23
 
24
24
 
25
25
  ~~実現したいことが再生画面上に来てからというのがマストの要件なら仕方ないと思うのですが、個人的には開く前からそもそもリストから消えていてほしいなと思ったりしました。~~
26
+
27
+
28
+
29
+ // ここから追記
30
+
31
+
32
+
33
+ まず前提としてjquery関連は使わないようにしたほうが良いので無しにしましょう。
34
+
35
+ 外部ライブラリに依存すると仕様変更の追従が厄介になります。
36
+
37
+ 何か動作確認してみましたが何か他のJqueryとバッティングしているのか正しく動作しませんでした。
38
+
39
+
40
+
41
+
42
+
43
+ 自分の方でスクリプト組んでかんたんに動作確認したやつ貼ります。
44
+
45
+ nameとか諸々デフォルトにしているので修正してください。
46
+
47
+ ただ、要素のREMOVEをしても、動画自体が消えるわけではないので
48
+
49
+ 恐らく主さんが想像しているようなこととはちょっと違う結果になると思います。
50
+
51
+ (プレイヤーは消えるが音声は再生されたまま)
52
+
53
+
54
+
55
+ ここをどうするかはちょっとご自身で考えて工夫してみてください、多分実現はできると思います。
56
+
57
+ 例えばブラウザバックに変えるとか、別のアプローチもできるんじゃないかなと。
58
+
59
+
60
+
61
+ それで原因だった所ですが、そもそもスクリプトが走るタイミングが画面を開いたときだったので、名前の要素の部分がない状態で取得処理が走っていました。
62
+
63
+ コンソール上だと要素出てるから気づけなかったです。
64
+
65
+ なのでインターバルで名前の部分が出るまで待機してから削除処理をするようにしました。
66
+
67
+
68
+
69
+ ```javascript
70
+
71
+ // ==UserScript==
72
+
73
+ // @name New Userscript
74
+
75
+ // @namespace http://tampermonkey.net/
76
+
77
+ // @version 0.1
78
+
79
+ // @description try to take over the world!
80
+
81
+ // @author You
82
+
83
+ // @match https://www.youtube.com/watch?v=*
84
+
85
+ // @grant none
86
+
87
+ // ==/UserScript==
88
+
89
+
90
+
91
+ (function() {
92
+
93
+ 'use strict';
94
+
95
+
96
+
97
+ ///////////////////////
98
+
99
+ // EDIT WHITELIST HERE:
100
+
101
+ ///////////////////////
102
+
103
+
104
+
105
+ var whitelist = [
106
+
107
+ 'TheBackyardScientist',
108
+
109
+ 'Cody\'sLab',
110
+
111
+ 'The Slo Mo Guys'
112
+
113
+ ];
114
+
115
+
116
+
117
+ function searchStringInArray (str, strArray) {
118
+
119
+ for (var j=0; j<strArray.length; j++) {
120
+
121
+ var testStr = strArray[j].toLowerCase();
122
+
123
+ var matchStr = str.toLowerCase();
124
+
125
+ if (testStr.match(matchStr)) return j;
126
+
127
+ }
128
+
129
+ return -1;
130
+
131
+ }
132
+
133
+
134
+
135
+ var set_interval_id = setInterval(findTargetElement, 1000);
136
+
137
+
138
+
139
+ function findTargetElement() {
140
+
141
+ if(document.getElementById('scriptTag') != null) {
142
+
143
+ clearInterval(set_interval_id);
144
+
145
+ //alert('ページの読み込みが完了したよ!');
146
+
147
+ // Your code here...
148
+
149
+ //alert("main kokokara")
150
+
151
+ //Find the channel name on the page
152
+
153
+ var testString = JSON.parse(document.querySelector("#scriptTag").innerText).author;
154
+
155
+ // var testString ="hogehoge"
156
+
157
+ //alert(testString)
158
+
159
+ //Search for the channel name in the array
160
+
161
+ var searchVal = searchStringInArray(testString,whitelist);
162
+
163
+ //If the channel isn't present, then delete content and error out:
164
+
165
+ if (searchVal==-1) {
166
+
167
+ document.querySelector("#player-theater-container").remove();
168
+
169
+ //alert("This channel isn't on the Youtube whitelist!");
170
+
171
+ }
172
+
173
+ }
174
+
175
+ }
176
+
177
+
178
+
179
+
180
+
181
+ })();
182
+
183
+ ```

2

情報追加

2021/02/05 08:58

投稿

eneko0513
eneko0513

スコア349

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  ```javascript
18
18
 
19
- var testString = JSON.parse($("#scriptTag").innerText).author;
19
+ var testString = JSON.parse(document.querySelector("#scriptTag").innerText).author;
20
20
 
21
21
  ```
22
22
 

1

情報追加

2021/02/05 06:57

投稿

eneko0513
eneko0513

スコア349

test CHANGED
@@ -12,9 +12,11 @@
12
12
 
13
13
 
14
14
 
15
+ こちらを試してもらえますか?
16
+
15
17
  ```javascript
16
18
 
17
- $("a.yt-simple-endpoint.style-scope.yt-formatted-string").innerHTML;
19
+ var testString = JSON.parse($("#scriptTag").innerText).author;
18
20
 
19
21
  ```
20
22