Selaa lähdekoodia

seek and volume notice; enable hotkey after focus

DIYgod 8 vuotta sitten
vanhempi
commit
644e4734d5
8 muutettua tiedostoa jossa 54 lisäystä ja 29 poistoa
  1. 0 0
      dist/DPlayer.min.css
  2. 0 0
      dist/DPlayer.min.css.map
  3. 0 0
      dist/DPlayer.min.js
  4. 0 0
      dist/DPlayer.min.js.map
  5. 1 1
      package.json
  6. 46 28
      src/DPlayer.js
  7. 4 0
      src/DPlayer.scss
  8. 3 0
      src/i18n.js

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/DPlayer.min.css


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/DPlayer.min.css.map


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/DPlayer.min.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/DPlayer.min.js.map


+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "dplayer",
-  "version": "1.6.0",
+  "version": "1.6.1",
   "description": "Wow, such a lovely HTML5 danmaku video player",
   "main": "dist/DPlayer.min.js",
   "style": "dist/DPlayer.min.css",

+ 46 - 28
src/DPlayer.js

@@ -64,6 +64,14 @@ class DPlayer {
 
         this.element.innerHTML = html.main(option, index, this.tran);
 
+        document.addEventListener('click', () => {
+            this.focus = false;
+        }, true);
+
+        this.element.addEventListener('click', () => {
+            this.focus = true;
+        }, true);
+
         if (this.option.danmaku) {
             this.danmaku = new Danmaku({
                 container: this.element.getElementsByClassName('dplayer-danmaku')[0],
@@ -666,34 +674,36 @@ class DPlayer {
          * hot key
          */
         const handleKeyDown = (e) => {
-            const tag = document.activeElement.tagName.toUpperCase();
-            const editable = document.activeElement.getAttribute('contenteditable');
-            if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {
-                const event = e || window.event;
-                let percentage;
-                switch (event.keyCode) {
-                case 32:
-                    event.preventDefault();
-                    this.toggle();
-                    break;
-                case 37:
-                    event.preventDefault();
-                    this.seek(this.video.currentTime - 5);
-                    break;
-                case 39:
-                    event.preventDefault();
-                    this.seek(this.video.currentTime + 5);
-                    break;
-                case 38:
-                    event.preventDefault();
-                    percentage = this.video.volume + 0.1;
-                    this.volume(percentage);
-                    break;
-                case 40:
-                    event.preventDefault();
-                    percentage = this.video.volume - 0.1;
-                    this.volume(percentage);
-                    break;
+            if (this.focus) {
+                const tag = document.activeElement.tagName.toUpperCase();
+                const editable = document.activeElement.getAttribute('contenteditable');
+                if (tag !== 'INPUT' && tag !== 'TEXTAREA' && editable !== '' && editable !== 'true') {
+                    const event = e || window.event;
+                    let percentage;
+                    switch (event.keyCode) {
+                    case 32:
+                        event.preventDefault();
+                        this.toggle();
+                        break;
+                    case 37:
+                        event.preventDefault();
+                        this.seek(this.video.currentTime - 5);
+                        break;
+                    case 39:
+                        event.preventDefault();
+                        this.seek(this.video.currentTime + 5);
+                        break;
+                    case 38:
+                        event.preventDefault();
+                        percentage = this.video.volume + 0.1;
+                        this.volume(percentage);
+                        break;
+                    case 40:
+                        event.preventDefault();
+                        percentage = this.video.volume - 0.1;
+                        this.volume(percentage);
+                        break;
+                    }
                 }
             }
         };
@@ -790,6 +800,13 @@ class DPlayer {
             time = Math.min(time, this.video.duration);
         }
 
+        if (this.video.currentTime < time) {
+            this.notice(`${this.tran('FF to')} ${utils.secondToTime(time)}`);
+        }
+        else if (this.video.currentTime > time) {
+            this.notice(`${this.tran('REW to')} ${utils.secondToTime(time)}`);
+        }
+
         this.video.currentTime = time;
 
         if (this.danmaku) {
@@ -850,6 +867,7 @@ class DPlayer {
         percentage = percentage > 0 ? percentage : 0;
         percentage = percentage < 1 ? percentage : 1;
         this.updateBar('volume', percentage, 'width');
+        this.notice(`${this.tran('Volume')} ${(percentage * 100).toFixed(0)}%`);
         this.video.volume = percentage;
         if (this.video.muted) {
             this.video.muted = false;

+ 4 - 0
src/DPlayer.scss

@@ -500,6 +500,10 @@
                 &.dplayer-setting-icon {
                     padding-top: 8.5px;
                 }
+
+                &.dplayer-volume-icon {
+                    width: 43px;
+                }
             }
 
             .dplayer-fill {

+ 3 - 0
src/i18n.js

@@ -19,6 +19,9 @@ const tranZH = {
     'Switching to': '正在切换至',
     'Switched to': '已经切换至',
     'quality': '画质',
+    'FF to': '快进至',
+    'REW to': '快退至',
+    'Volume': '音量'
 };
 
 module.exports = function (lang) {

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä