2016-10-20 1 views
2

lors de l'activation des sous-titres YouTube, si vous essayez de sélectionner un mot dans la légende des sous-titres identifiés dans le DOM par id="caption-window-1", la première chose remarquée est: il n'est pas sélectionnable, donc pour le rendre sélectionnable, je lance ce script la console js en utilisant l'outil de développement sur navigateur Chrome:comment rendre les sous-titres youtube sélectionnables?

(function() { 
var caption= document.getElementById("caption-window-1"); 
caption.style.cursor="text"; 
caption.style["-webkit-user-select"]="all"; 
      })(); 

son tour parfaitement, mais la légende toujours en mouvement quand cliquez dessus (vous pouvez l'essayer par vous-même sur YouTube)

donc je peux » t sélectionnez facilement un mot dans la légende, il bouge toujours ce que je fais.

Je veux désactiver le mouvement de légende sur l'événement onclick toute idée pour corriger cela en utilisant javascript?

Répondre

0

Le problème est que le champ de texte est déplaçable pour permettre à l'utilisateur de positionner le champ n'importe où sur l'écran, de sorte qu'il est en conflit avec ce que vous essayez de faire. Vous pouvez simplement enregistrer et pousser le texte dans un tableau et l'analyser une fois la vidéo terminée.

L'extrait est pas très élégant mais devrait vous aider à démarrer:

var wordsAll = []; 
var wordsPrev = []; 
var previousLine = ''; 
function checkText() { 
    var caption= document.getElementById("caption-window-1"); 
    requestAnimationFrame(checkText); 
    if (caption === null) return; 
    var wordsNow = caption.textContent.split(' '); 
    if (wordsPrev.length > 0 && wordsPrev.length < wordsNow.length) { 
    for (var i=0,l= wordsNow.length; i<l; i++) { 
     wordsAll.push(wordsPrev[i]); 
    } 
    } 
    wordsPrev = wordsNow.slice(l); 
} 
checkText(); 

Ensuite, il suffit de faire quelque chose comme console.log(wordsAll.join(' '))

Hope that helps!

+0

Merci pour ces détails, ils sont très utile si je veux télécharger les sutitles, mais je veux juste sélectionner un mot parmi tous les mots dans la légende – Jolo

+0

sélectionnez-le pour permettre à l'extension google translate de détecter cette sélection puis je peux la traduire, de toute façon c'est une bonne idée que vous suggérez. – Jolo

0

Vous devez installer capturing écouteurs d'événements qui font appel stopPropagation sur l'événement pour l'intercepter avant que le javascript sur youtube peut les traiter et supress l'action par défaut, à savoir la sélection de texte

youtube subtitle event listeners.

+0

le problème est que je ne sais pas quel événement qui provoque le mouvement de cuption du sous-titre ... – Jolo