Skip to content

Commit 1c074f1

Browse files
committed
✨ Add option to select play or pause when loading
1 parent 33e9d2a commit 1c074f1

File tree

4 files changed

+87
-41
lines changed

4 files changed

+87
-41
lines changed

options.css

+4
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,7 @@ label, #button-wrap {
105105
width: 79px;
106106
text-align: center;
107107
}
108+
109+
select {
110+
border: 1px solid #cccccc;
111+
}

options.html

+9
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,15 @@ <h3>Shortcuts</h3>
7575
<input id="skip-time-amount" type="text" value="">
7676
</div>
7777

78+
<div class="settings">
79+
<label for="play-or-pause-when-loading">Play or pause when loading</label>
80+
<select id="play-or-pause-when-loading" name="play-or-pause-when-loading">
81+
<option value="default">Leave it to a site</option>
82+
<option value="play">Play automatically</option>
83+
<option value="pause">Always pause</option>
84+
</select>
85+
</div>
86+
7887
<div class="settings">
7988
<label for="scroll-to-player">Scroll to a player automatically</label>
8089
<div id="checkbox-wrapper"><input id="scroll-to-player" type="checkbox"></div>

options.js

+51-18
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
var defaultKey = {
2-
togglePlayAndPauseKeyCode: 'p',
3-
jumpToBeginningKeyCode: 'h',
4-
jumpToEndKeyCode: 'e',
5-
rewindTimeKeyCode: 'a',
6-
advanceTimeKeyCode: 's',
7-
speedDownKeyCode: 'd',
8-
speedUpKeyCode: 'u',
9-
resetSpeedKeyCode: 'r',
10-
toggleFullscreenKeyCode: 'f',
11-
partialLoopKeyCode: 'l',
12-
partialLoopPrecision: 100,
13-
skipTimeAmount: 5,
14-
scrollToPlayerChecked: false,
15-
rememberPlaybackSpeedChecked: true,
16-
alwaysShowProgressBarChecked: false,
2+
togglePlayAndPauseKeyCode: 'p',
3+
jumpToBeginningKeyCode: 'h',
4+
jumpToEndKeyCode: 'e',
5+
rewindTimeKeyCode: 'a',
6+
advanceTimeKeyCode: 's',
7+
speedDownKeyCode: 'd',
8+
speedUpKeyCode: 'u',
9+
resetSpeedKeyCode: 'r',
10+
toggleFullscreenKeyCode: 'f',
11+
partialLoopKeyCode: 'l',
12+
partialLoopPrecision: 100,
13+
skipTimeAmount: 5,
14+
playOrPauseWhenLoadingSelect: 'default',
15+
scrollToPlayerChecked: false,
16+
rememberPlaybackSpeedChecked: true,
17+
alwaysShowProgressBarChecked: false,
1718
};
1819

1920
$(function() {
@@ -39,6 +40,7 @@ $(function() {
3940

4041
function loadOptions() {
4142
chrome.storage.sync.get(defaultKey, function(storage) {
43+
// key
4244
updateInputText('toggle-play-and-pause', storage.togglePlayAndPauseKeyCode);
4345
updateInputText('jump-to-beginning', storage.jumpToBeginningKeyCode);
4446
updateInputText('jump-to-end', storage.jumpToEndKeyCode);
@@ -49,8 +51,15 @@ function loadOptions() {
4951
updateInputText('reset-speed', storage.resetSpeedKeyCode);
5052
updateInputText('toggle-fullscreen', storage.toggleFullscreenKeyCode);
5153
updateInputText('partial-loop', storage.partialLoopKeyCode);
54+
55+
// numeric
5256
document.getElementById('partial-loop-precision').value = storage.partialLoopPrecision;
5357
document.getElementById('skip-time-amount').value = storage.skipTimeAmount;
58+
59+
// select menu
60+
document.getElementById('play-or-pause-when-loading').value = storage.playOrPauseWhenLoadingSelect;
61+
62+
// check box
5463
document.getElementById('scroll-to-player').checked = storage.scrollToPlayerChecked;
5564
document.getElementById('remember-playback-speed').checked = storage.rememberPlaybackSpeedChecked;
5665
document.getElementById('always-show-progress-bar').checked = storage.alwaysShowProgressBarChecked;
@@ -75,6 +84,7 @@ function saveOptions() {
7584
var partialLoopKeyCode = document.getElementById('partial-loop').value;
7685
var partialLoopPrecision = document.getElementById('partial-loop-precision').value;
7786
var skipTimeAmount = document.getElementById('skip-time-amount').value;
87+
var playOrPauseWhenLoadingSelect = document.getElementById('play-or-pause-when-loading').value;
7888
var scrollToPlayerChecked = document.getElementById('scroll-to-player').checked;
7989
var rememberPlaybackSpeedChecked = document.getElementById('remember-playback-speed').checked;
8090
var alwaysShowProgressBarChecked = document.getElementById('always-show-progress-bar').checked;
@@ -92,9 +102,10 @@ function saveOptions() {
92102
validateFlag[9] = checkValidate('partial-loop');
93103
validateFlag[10] = checkValidateNumeric('partial-loop-precision');
94104
validateFlag[11] = checkValidateNumeric('skip-time-amount');
95-
validateFlag[12] = checkValidateChecked('scroll-to-player');
96-
validateFlag[13] = checkValidateChecked('remember-playback-speed');
97-
validateFlag[14] = checkValidateChecked('always-show-progress-bar');
105+
validateFlag[12] = checkValidateSelect('play-or-pause-when-loading', ['default', 'play', 'pause']);
106+
validateFlag[13] = checkValidateChecked('scroll-to-player');
107+
validateFlag[14] = checkValidateChecked('remember-playback-speed');
108+
validateFlag[15] = checkValidateChecked('always-show-progress-bar');
98109

99110
// when some input is wrong.
100111
for (var i = 0; i < validateFlag.length; i++) {
@@ -116,6 +127,7 @@ function saveOptions() {
116127
partialLoopKeyCode: partialLoopKeyCode,
117128
partialLoopPrecision: partialLoopPrecision,
118129
skipTimeAmount: skipTimeAmount,
130+
playOrPauseWhenLoadingSelect: playOrPauseWhenLoadingSelect,
119131
scrollToPlayerChecked: scrollToPlayerChecked,
120132
rememberPlaybackSpeedChecked: rememberPlaybackSpeedChecked,
121133
alwaysShowProgressBarChecked: alwaysShowProgressBarChecked
@@ -234,4 +246,25 @@ function checkValidateChecked(inputID) {
234246
} else {
235247
$(inputID).css('border', '1px solid #cccccc');
236248
}
249+
250+
// return value: true -> save the options, false -> do not save.
251+
if (errorFlag === true) {
252+
return false;
253+
} else {
254+
return true;
255+
}
256+
}
257+
258+
function checkValidateSelect(inputID, menu) {
259+
var inputID = '#' + inputID;
260+
$(inputID).parent().children('.invalid-value').remove();
261+
if (menu.includes($(inputID).val())) {
262+
$(inputID).css('border', '1px solid #cccccc');
263+
return true;
264+
}
265+
else {
266+
$(inputID).css('border', '1px solid red');
267+
$(inputID).parent().append('<div class="invalid-value">Invalid value</div>');
268+
return false;
269+
}
237270
}

script.js

+23-23
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,23 @@ $(function() {
22

33
var settings = {
44
// オプションで変更可能なキーコード
5-
togglePlayAndPauseKeyCode: 'p',
6-
jumpToBeginningKeyCode: 'h',
7-
jumpToEndKeyCode: 'e',
8-
rewindTimeKeyCode: 'a',
9-
advanceTimeKeyCode: 's',
10-
speedDownKeyCode: 'd',
11-
speedUpKeyCode: 'u',
12-
resetSpeedKeyCode: 'r',
13-
toggleFullscreenKeyCode: 'f',
14-
partialLoopKeyCode: 'l',
15-
partialLoopPrecision: 100,
16-
skipTimeAmount: 5,
17-
scrollToPlayerChecked: false,
18-
rememberPlaybackSpeedChecked: true,
19-
alwaysShowProgressBarChecked: false,
20-
playbackSpeed: 1.0,
5+
togglePlayAndPauseKeyCode: 'p',
6+
jumpToBeginningKeyCode: 'h',
7+
jumpToEndKeyCode: 'e',
8+
rewindTimeKeyCode: 'a',
9+
advanceTimeKeyCode: 's',
10+
speedDownKeyCode: 'd',
11+
speedUpKeyCode: 'u',
12+
resetSpeedKeyCode: 'r',
13+
toggleFullscreenKeyCode: 'f',
14+
partialLoopKeyCode: 'l',
15+
partialLoopPrecision: 100,
16+
skipTimeAmount: 5,
17+
playOrPauseWhenLoadingSelect: 'default',
18+
scrollToPlayerChecked: false,
19+
rememberPlaybackSpeedChecked: true,
20+
alwaysShowProgressBarChecked: false,
21+
playbackSpeed: 1.0,
2122
};
2223
var fixed = {
2324
// 固定のキーコード
@@ -38,8 +39,9 @@ $(function() {
3839
settings.resetSpeedKeyCode = storage.resetSpeedKeyCode;
3940
settings.toggleFullscreenKeyCode = storage.toggleFullscreenKeyCode;
4041
settings.partialLoopKeyCode = storage.partialLoopKeyCode;
41-
settings.partialLoopPrecision = storage.partialLoopPrecision;
42+
settings.partialLoopPrecision = Number(storage.partialLoopPrecision);
4243
settings.skipTimeAmount = Number(storage.skipTimeAmount);
44+
settings.playOrPauseWhenLoadingSelect = storage.playOrPauseWhenLoadingSelect;
4345
settings.scrollToPlayerChecked = Boolean(storage.scrollToPlayerChecked);
4446
settings.rememberPlaybackSpeedChecked = Boolean(storage.rememberPlaybackSpeedChecked);
4547
settings.alwaysShowProgressBarChecked = Boolean(storage.alwaysShowProgressBarChecked);
@@ -83,12 +85,10 @@ $(function() {
8385
getPlaybackSpeed();
8486
showAndHideProgressBar();
8587

86-
// Originally in YouTube, etc., video plays automatically when loading the watching page,
87-
// but because of calling createFullscreenVideoWrapper(), somehow video pauses.
88-
// I suspect the frontend JavaScript doesn't work correctly
89-
// by wrapping video player (by changing HTML element structure).
90-
// So it plays video manually when loading the page.
91-
player.play();
88+
switch (settings.playOrPauseWhenLoadingSelect) {
89+
case 'play': player.play(); break;
90+
case 'pause': player.pause(); break;
91+
}
9292

9393
return false;
9494
}

0 commit comments

Comments
 (0)