回答編集履歴

1

サンプルコードの追加

2019/07/23 08:55

投稿

og24715
og24715

スコア832

test CHANGED
@@ -7,3 +7,145 @@
7
7
  HTMLMediaElement: seeked event - Web APIs | MDN
8
8
 
9
9
  [https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/seeked_event](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/seeked_event)
10
+
11
+
12
+
13
+ ---
14
+
15
+
16
+
17
+ React 使ってますけど試しに書いてみました。
18
+
19
+ React 使おうが使わまいが `handleTimeUpdate` でやってることは変わらないと思います。
20
+
21
+
22
+
23
+ [https://codepen.io/og24715/pen/ymeXeK?editors=0010](https://codepen.io/og24715/pen/ymeXeK?editors=0010)
24
+
25
+
26
+
27
+ ```const videoUrl = 'https://sample-videos.com/video123/mp4/240/big_buck_bunny_240p_1mb.mp4';
28
+
29
+
30
+
31
+ const VideoPlayer = ({ a, b }) => {
32
+
33
+ const handleTimeUpdate = (e) => {
34
+
35
+ const time = e.target.currentTime;
36
+
37
+ if (b < time) {
38
+
39
+ e.target.pause();
40
+
41
+ e.target.currentTime = b;
42
+
43
+ } else if (time < a) {
44
+
45
+ e.target.pause();
46
+
47
+ e.target.currentTime = a;
48
+
49
+ }
50
+
51
+ };
52
+
53
+
54
+
55
+ return (
56
+
57
+ <video
58
+
59
+ src={videoUrl}
60
+
61
+ controls
62
+
63
+ onTimeUpdate={handleTimeUpdate} />
64
+
65
+ );
66
+
67
+ };
68
+
69
+
70
+
71
+ const App = () => {
72
+
73
+ const [a, setA] = React.useState(0);
74
+
75
+ const [b, setB] = React.useState(13);
76
+
77
+
78
+
79
+ const handleChangeA = (e) => setA(e.target.value);
80
+
81
+ const handleChangeB = (e) => setB(e.target.value);
82
+
83
+
84
+
85
+ return (
86
+
87
+ <div>
88
+
89
+ <VideoPlayer a={a} b={b} />
90
+
91
+ <form>
92
+
93
+ <p>
94
+
95
+ A
96
+
97
+ <input
98
+
99
+ type="range"
100
+
101
+ value={a}
102
+
103
+ min={0}
104
+
105
+ max={13}
106
+
107
+ onChange={handleChangeA} />
108
+
109
+ {a}
110
+
111
+ </p>
112
+
113
+ <p>
114
+
115
+ B
116
+
117
+ <input
118
+
119
+ type="range"
120
+
121
+ value={b}
122
+
123
+ min={0}
124
+
125
+ max={13}
126
+
127
+ onChange={handleChangeB} />
128
+
129
+ {b}
130
+
131
+ </p>
132
+
133
+ </form>
134
+
135
+ </div>
136
+
137
+ );
138
+
139
+ }
140
+
141
+
142
+
143
+ ReactDOM.render(
144
+
145
+ <App />,
146
+
147
+ document.querySelector('#root'),
148
+
149
+ );
150
+
151
+ ```