Greasy Fork

课程视频助手

课程视频防止掉线并设置每分钟更新视频观看时间

目前为 2020-03-04 提交的版本。查看 最新版本

// ==UserScript==
// @name         课程视频助手
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  课程视频防止掉线并设置每分钟更新视频观看时间
// @author       零度
// @match        *://course.ucas.ac.cn/portal/site/*/tool/*/video/play?id=*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

     portal.forever_keep_alive = function forever_keep_alive(){
     clearTimeout(sessionTimeOut);
     keep_session_alive();
     $("#videoState").val("1");
     checkTime();
     portal.forever_keep_alive_timer = setTimeout('portal.forever_keep_alive()', 60000);
     }
     portal.forever_keep_alive();

//following code is copied from chrome extension 'Enable Copy'
var doc = document;
var body = doc.body;
var html = doc.documentElement;

function allowUserSelect(element) {
	element.setAttribute('style', '-webkit-user-select: auto !important');
	element.setAttribute('style', 'user-select: auto !important');
	return element;
}

function allowUserSelectById(element_id) {
	return allowUserSelect(doc.getElementById(element_id));
}

function allowUserSelectByClassName(element_class) {
	var elements = doc.getElementsByClassName(element_class);
	var len = elements.length;
	for (var i = 0; i < len; ++i) {
		allowUserSelect(elements[i]);
	}
	return elements;
}

function clearHandlers() {
	html.onselectstart = html.oncopy = html.oncut = html.onpaste = html.onkeydown = html.oncontextmenu = html.onmousemove = body.oncopy = body.oncut = body.onpaste = body.onkeydown = body.oncontextmenu = body.onmousedown = body.onmousemove = body.onselectstart = body.ondragstart = doc.onselectstart = doc.oncopy = doc.oncut = doc.onpaste = doc.onkeydown = doc.oncontextmenu = doc.onmousedown = doc.onmouseup = window.onkeyup = window.onkeydown = null;
	allowUserSelect(html);
	allowUserSelect(body);
}
clearHandlers();

function defaultHandler(event) {
	event.returnValue = true;
}
for (event_type in ['selectstart', 'copy', 'cut', 'paste', 'keydown', 'contextmenu', 'dragstart']) {
	html.addEventListener(event_type, defaultHandler);
	body.addEventListener(event_type, defaultHandler);
	doc.addEventListener(event_type, defaultHandler);
}

function removeEventAttributes(element) {
	element.removeAttribute('oncontextmenu');
	element.removeAttribute('ondragstart');
	element.removeAttribute('onselectstart');
	element.removeAttribute('onselect');
	element.removeAttribute('oncopy');
	element.removeAttribute('onbeforecopy');
	element.removeAttribute('oncut');
	element.removeAttribute('onpaste');
	element.removeAttribute('onclick');
	element.removeAttribute('onmousedown');
	element.removeAttribute('onmouseup');
}

var jQuery = window.jQuery;

var $Fn = window.$Fn;
if ($Fn) {
	try {
		$Fn.freeElement(doc);
		$Fn.freeElement(body);
	} catch (e) {}
}

var jindo = window.jindo;
if (jindo) {
	jindo.$A = null;
}

function replaceElementEventsWithClone(element) {
	var clone = element.cloneNode();
	while (element.firstChild) {
		clone.appendChild(element.firstChild);
	}
	element.parentNode.replaceChild(clone, element);
}

function replaceElementsEventsWithClone(elements) {
	var length = elements.length;
	for (var i = 0; i < length; ++ i) {
		replaceElementEventsWithClone(elements[i]);
	}
}

var url = doc.URL;
var domain_pattern = /^https?:\/\/([^\/]+)/;
var result = domain_pattern.exec(url);
if (result) {
	try {
		var domain = result[1];
		if (jQuery) {
			var $doc = jQuery(doc);
			var $body = jQuery(body);
			if ($doc.off) {
				$doc.off();
				$body.off();
				jQuery(window).off();
			} else {
				$doc.unbind();
				$body.unbind();
				jQuery(window).unbind();
			}
		}
	} catch (e) {
		console.log(e);
	}
}
})();