添加了coursera视频开启和关闭中英双字幕的功能
// ==UserScript==
// @name coursera开启中英双字幕(coursera subtitle CN+EN)
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 添加了coursera视频开启和关闭中英双字幕的功能
// @author zhhsh
// @include *://www.coursera.org/*
// @match https://www.coursera.org/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
//if you want to change the subtitles of other languages or add more subtitles,change the language tag of subtitles in line 36:'["en", "zh-CN"]'
/*
核心代码如下:
var myvideo = document.getElementsByTagName('video')[0];
for (var i = 0; i < myvideo.textTracks.length; i++) {
["en", "zh-CN"].indexOf(myvideo.textTracks[i].language) > -1 ? myvideo.textTracks[i].mode = "showing" : myvideo.textTracks[i].mode = "hidden";
}
不使用脚本或脚本失效时,只需在控制台执行以上代码,就能开启双字幕,但是每次切换视频都要重新执行一遍
核心代码是从别人的文章里看来的,来源:https://hieast.github.io/2017/11/21/coursera-enable-bilingual-subtitle/
*/
//双字幕按钮
var dualSubtitlesBtn = document.createElement("a");
dualSubtitlesBtn.innerHTML='双字幕';
dualSubtitlesBtn.classList.add('nav-link');
dualSubtitlesBtn.classList.add('dim');
dualSubtitlesBtn.classList.add('body-1-text');
dualSubtitlesBtn.setAttribute('aria-label','双字幕');
dualSubtitlesBtn.href='javascript:void(0);';
dualSubtitlesBtn.addEventListener('click',function(){
myvideo = document.getElementsByTagName('video')[0];//每次都刷新video对象,避免“视频已经播放下一个,video还是上一个视频”的情况
for (var i = 0; i < myvideo.textTracks.length; i++) {//显示中英双字幕
["en", "zh-CN"].indexOf(myvideo.textTracks[i].language) > -1 ? myvideo.textTracks[i].mode = "showing" : myvideo.textTracks[i].mode = "hidden";
}
});
//关闭字幕按钮,因为使用双字幕后,原来的‘关闭字幕’功能会有异常,所以添加新的‘关闭字幕按钮’
var closeSubtitlesBtn = document.createElement("a");
closeSubtitlesBtn.innerHTML='无字幕';
closeSubtitlesBtn.classList.add('nav-link');
closeSubtitlesBtn.classList.add('dim');
closeSubtitlesBtn.classList.add('body-1-text');
closeSubtitlesBtn.setAttribute('aria-label','无字幕');
closeSubtitlesBtn.href='javascript:void(0);';
closeSubtitlesBtn.addEventListener('click',function(){
myvideo = document.getElementsByTagName('video')[0];//每次都刷新video对象,避免“视频已经播放下一个,video还是上一个视频”的情况
for (var i = 0; i < myvideo.textTracks.length; i++) {//关闭所有字幕
myvideo.textTracks[i].mode = "hidden";
}
});
//分隔符
var seperatorBar = document.createElement('div');
seperatorBar.classList.add('divider');
var mycon;
var myvideo;
var iterateTimes = 0;
(function init(){
mycon = document.getElementsByClassName('rc-PreviousAndNextItem')[0];
myvideo = document.getElementsByTagName('video')[0];
if(mycon&&myvideo){//等mycon和myvideo都存在的时候执行
mycon.prepend(seperatorBar);
mycon.prepend(dualSubtitlesBtn);
mycon.prepend(seperatorBar.cloneNode());
mycon.prepend(closeSubtitlesBtn);
}else{
if(++iterateTimes<10){//限制计时器的重复执行次数,避免那些本来就没有视频的coursera页面无限setTimeout...,也可以修改触发脚本的url的规则@include,不会
setTimeout(init, 1000);
}
}
})();
})();