Skip to content

Commit 7e8d4de

Browse files
committed
Add new feature: Get next video element
1 parent baad113 commit 7e8d4de

File tree

3 files changed

+54
-29
lines changed

3 files changed

+54
-29
lines changed

options.html

+5
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ <h3>Shortcuts</h3>
6565
<input id="toggle-fullscreen" type="text" value="">
6666
</div>
6767

68+
<div class="settings">
69+
<label for="get-next-video-element">Get next video element</label>
70+
<input id="get-next-video-element" type="text" value="">
71+
</div>
72+
6873
<div class="settings">
6974
<label for="partial-loop-precision">Partial loop precision</label>
7075
<input id="partial-loop-precision" type="text" value="">

options.js

+23-17
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ var defaultKey = {
88
speedUpKeyCode: 'u',
99
resetSpeedKeyCode: 'r',
1010
toggleFullscreenKeyCode: 'f',
11+
getNextVideoElementKeyCode: 'n',
1112
partialLoopKeyCode: 'l',
1213
partialLoopPrecision: 100,
1314
skipTimeAmount: 5,
@@ -32,6 +33,7 @@ $(function() {
3233
initShortcutInput('speed-up');
3334
initShortcutInput('reset-speed');
3435
initShortcutInput('toggle-fullscreen');
36+
initShortcutInput('get-next-video-element');
3537
initShortcutInput('partial-loop');
3638

3739
initNumericInput('partial-loop-precision');
@@ -41,16 +43,17 @@ $(function() {
4143
function loadOptions() {
4244
chrome.storage.sync.get(defaultKey, function(storage) {
4345
// key
44-
updateInputText('toggle-play-and-pause', storage.togglePlayAndPauseKeyCode);
45-
updateInputText('jump-to-beginning', storage.jumpToBeginningKeyCode);
46-
updateInputText('jump-to-end', storage.jumpToEndKeyCode);
47-
updateInputText('rewind-time', storage.rewindTimeKeyCode);
48-
updateInputText('advance-time', storage.advanceTimeKeyCode);
49-
updateInputText('speed-down', storage.speedDownKeyCode);
50-
updateInputText('speed-up', storage.speedUpKeyCode);
51-
updateInputText('reset-speed', storage.resetSpeedKeyCode);
52-
updateInputText('toggle-fullscreen', storage.toggleFullscreenKeyCode);
53-
updateInputText('partial-loop', storage.partialLoopKeyCode);
46+
updateInputText('toggle-play-and-pause', storage.togglePlayAndPauseKeyCode);
47+
updateInputText('jump-to-beginning', storage.jumpToBeginningKeyCode);
48+
updateInputText('jump-to-end', storage.jumpToEndKeyCode);
49+
updateInputText('rewind-time', storage.rewindTimeKeyCode);
50+
updateInputText('advance-time', storage.advanceTimeKeyCode);
51+
updateInputText('speed-down', storage.speedDownKeyCode);
52+
updateInputText('speed-up', storage.speedUpKeyCode);
53+
updateInputText('reset-speed', storage.resetSpeedKeyCode);
54+
updateInputText('toggle-fullscreen', storage.toggleFullscreenKeyCode);
55+
updateInputText('get-next-video-element', storage.getNextVideoElementKeyCode);
56+
updateInputText('partial-loop', storage.partialLoopKeyCode);
5457

5558
// numeric
5659
document.getElementById('partial-loop-precision').value = storage.partialLoopPrecision;
@@ -81,6 +84,7 @@ function saveOptions() {
8184
var speedUpKeyCode = document.getElementById('speed-up').value;
8285
var resetSpeedKeyCode = document.getElementById('reset-speed').value;
8386
var toggleFullscreenKeyCode = document.getElementById('toggle-fullscreen').value;
87+
var getNextVideoElementKeyCode = document.getElementById('get-next-video-element').value;
8488
var partialLoopKeyCode = document.getElementById('partial-loop').value;
8589
var partialLoopPrecision = document.getElementById('partial-loop-precision').value;
8690
var skipTimeAmount = document.getElementById('skip-time-amount').value;
@@ -99,13 +103,14 @@ function saveOptions() {
99103
validateFlag[6] = checkValidate('speed-up');
100104
validateFlag[7] = checkValidate('reset-speed');
101105
validateFlag[8] = checkValidate('toggle-fullscreen');
102-
validateFlag[9] = checkValidate('partial-loop');
103-
validateFlag[10] = checkValidateNumeric('partial-loop-precision');
104-
validateFlag[11] = checkValidateNumeric('skip-time-amount');
105-
validateFlag[12] = checkValidateSelect('play-or-pause-when-loading', ['default', 'play', 'pause']);
106-
validateFlag[13] = checkValidateSelect('show-or-hide-progress-bar', ['default', 'show', 'hide']);
107-
validateFlag[14] = checkValidateChecked('scroll-to-player');
108-
validateFlag[15] = checkValidateChecked('remember-playback-speed');
106+
validateFlag[9] = checkValidate('get-next-video-element');
107+
validateFlag[10] = checkValidate('partial-loop');
108+
validateFlag[11] = checkValidateNumeric('partial-loop-precision');
109+
validateFlag[12] = checkValidateNumeric('skip-time-amount');
110+
validateFlag[13] = checkValidateSelect('play-or-pause-when-loading', ['default', 'play', 'pause']);
111+
validateFlag[14] = checkValidateSelect('show-or-hide-progress-bar', ['default', 'show', 'hide']);
112+
validateFlag[15] = checkValidateChecked('scroll-to-player');
113+
validateFlag[16] = checkValidateChecked('remember-playback-speed');
109114

110115
// when some input is wrong.
111116
for (var i = 0; i < validateFlag.length; i++) {
@@ -124,6 +129,7 @@ function saveOptions() {
124129
speedUpKeyCode: speedUpKeyCode,
125130
resetSpeedKeyCode: resetSpeedKeyCode,
126131
toggleFullscreenKeyCode: toggleFullscreenKeyCode,
132+
getNextVideoElementKeyCode: getNextVideoElementKeyCode,
127133
partialLoopKeyCode: partialLoopKeyCode,
128134
partialLoopPrecision: partialLoopPrecision,
129135
skipTimeAmount: skipTimeAmount,

script.js

+26-12
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ $(function() {
1111
speedUpKeyCode: 'u',
1212
resetSpeedKeyCode: 'r',
1313
toggleFullscreenKeyCode: 'f',
14+
getNextVideoElementKeyCode: 'n',
1415
partialLoopKeyCode: 'l',
1516
partialLoopPrecision: 100,
1617
skipTimeAmount: 5,
@@ -38,6 +39,7 @@ $(function() {
3839
settings.speedUpKeyCode = storage.speedUpKeyCode;
3940
settings.resetSpeedKeyCode = storage.resetSpeedKeyCode;
4041
settings.toggleFullscreenKeyCode = storage.toggleFullscreenKeyCode;
42+
settings.getNextVideoElementKeyCode = storage.getNextVideoElementKeyCode;
4143
settings.partialLoopKeyCode = storage.partialLoopKeyCode;
4244
settings.partialLoopPrecision = Number(storage.partialLoopPrecision);
4345
settings.skipTimeAmount = Number(storage.skipTimeAmount);
@@ -70,12 +72,13 @@ $(function() {
7072
var videoLeft;
7173
var videoPos;
7274
var domainName = location.href.match(/^(.*?:\/\/)(.*?)([a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})[\:[0-9]*]?([\/].*?)?$/i)[3];
75+
var videoOrder = 0;
7376

7477
// video要素を取得する
7578
function getVideoElement(signal) {
76-
if (document.getElementsByTagName('video')[0] !== undefined) {
77-
if (document.getElementsByTagName('video')[0].readyState === 4) {
78-
player = document.getElementsByTagName('video')[0];
79+
if (document.getElementsByTagName('video')[videoOrder] !== undefined) {
80+
if (document.getElementsByTagName('video')[videoOrder].readyState === 4) {
81+
player = document.getElementsByTagName('video')[videoOrder];
7982
createNotFullscreenVideoWrapper();
8083
createFullscreenVideoWrapper();
8184

@@ -465,15 +468,16 @@ $(function() {
465468
// ショートカットキーから関数を呼び出す
466469
switch (eventKey) {
467470
// オプションのキーコード
468-
case settings.togglePlayAndPauseKeyCode: togglePlayAndPause(); break; // default: p
469-
case settings.jumpToBeginningKeyCode: jumpToBeginning(); showAndHideProgressBar(); break; // default: h
470-
case settings.jumpToEndKeyCode: jumpToEnd(); showAndHideProgressBar(); break; // default: e
471-
case settings.rewindTimeKeyCode: rewindTime(); showAndHideProgressBar(); break; // default: a
472-
case settings.advanceTimeKeyCode: advanceTime(); showAndHideProgressBar(); break; // default: s
473-
case settings.speedDownKeyCode: speedDown(); break; // default: d
474-
case settings.speedUpKeyCode: speedUp(); break; // default: u
475-
case settings.resetSpeedKeyCode: resetSpeed(); break; // default: r
476-
case settings.toggleFullscreenKeyCode: toggleFullscreen(); break; // default: f
471+
case settings.togglePlayAndPauseKeyCode: togglePlayAndPause(); break; // default: p
472+
case settings.jumpToBeginningKeyCode: jumpToBeginning(); showAndHideProgressBar(); break; // default: h
473+
case settings.jumpToEndKeyCode: jumpToEnd(); showAndHideProgressBar(); break; // default: e
474+
case settings.rewindTimeKeyCode: rewindTime(); showAndHideProgressBar(); break; // default: a
475+
case settings.advanceTimeKeyCode: advanceTime(); showAndHideProgressBar(); break; // default: s
476+
case settings.speedDownKeyCode: speedDown(); break; // default: d
477+
case settings.speedUpKeyCode: speedUp(); break; // default: u
478+
case settings.resetSpeedKeyCode: resetSpeed(); break; // default: r
479+
case settings.toggleFullscreenKeyCode: toggleFullscreen(); break; // default: f
480+
case settings.getNextVideoElementKeyCode: getNextVideoElement(); break; // default: n
477481
// 固定のキーコード
478482
case fixed.togglePlayAndPauseKeyCode: event.preventDefault(); togglePlayAndPause(); break; // space
479483
case fixed.rewindTimeKeyCode: event.preventDefault(); rewindTime(); showAndHideProgressBar(); break; // left-arrow
@@ -608,6 +612,16 @@ $(function() {
608612
}
609613
}
610614

615+
function getNextVideoElement() {
616+
videoOrder++;
617+
618+
if (videoOrder >= document.querySelectorAll('video').length) {
619+
videoOrder = 0;
620+
}
621+
622+
getVideoElement('next');
623+
}
624+
611625
// 動画の最初の位置に移動する
612626
function jumpToBeginning() {
613627
player.currentTime = player.seekable.start(0);

0 commit comments

Comments
 (0)