🏠 返回首頁 

Greasy Fork is available in English.

超星允许粘贴

超星学习通允许粘贴


Installer ce script?
/* eslint-disable no-multi-spaces */
// ==UserScript==
// @name               超星允许粘贴
// @name:zh-CN         超星允许粘贴
// @namespace          http://tampermonkey.net/
// @version            0.1
// @description        超星学习通允许粘贴
// @description:zh-CN  超星学习通允许粘贴
// @author             PY-DNG
// @license            GPL-v3
// @match              *://*.chaoxing.com/*
// @grant              none
// ==/UserScript==
(function __MAIN__() {
'use strict';
// DoLog
const LogLevel = {
None: 0,
Error: 1,
Success: 2,
Warning: 3,
Info: 4,
}
// Arguments: level=LogLevel.Info, logContent, asObject=false
// Needs one call "DoLog();" to get it initialized before using it!
function DoLog() {
// Get window
const win = (typeof(unsafeWindow) === 'object' && unsafeWindow !== null) ? unsafeWindow : window;
const LogLevelMap = {};
LogLevelMap[LogLevel.None] = {
prefix: '',
color: 'color:#ffffff'
}
LogLevelMap[LogLevel.Error] = {
prefix: '[Error]',
color: 'color:#ff0000'
}
LogLevelMap[LogLevel.Success] = {
prefix: '[Success]',
color: 'color:#00aa00'
}
LogLevelMap[LogLevel.Warning] = {
prefix: '[Warning]',
color: 'color:#ffa500'
}
LogLevelMap[LogLevel.Info] = {
prefix: '[Info]',
color: 'color:#888888'
}
LogLevelMap[LogLevel.Elements] = {
prefix: '[Elements]',
color: 'color:#000000'
}
// Current log level
DoLog.logLevel = win.isPY_DNG ? LogLevel.Info : LogLevel.Warning; // Info Warning Success Error
// Log counter
DoLog.logCount === undefined && (DoLog.logCount = 0);
// Get args
let level, logContent, asObject;
switch (arguments.length) {
case 1:
level = LogLevel.Info;
logContent = arguments[0];
asObject = false;
break;
case 2:
level = arguments[0];
logContent = arguments[1];
asObject = false;
break;
case 3:
level = arguments[0];
logContent = arguments[1];
asObject = arguments[2];
break;
default:
level = LogLevel.Info;
logContent = 'DoLog initialized.';
asObject = false;
break;
}
// Log when log level permits
if (level <= DoLog.logLevel) {
let msg = '%c' + LogLevelMap[level].prefix + (typeof MODULE_DATA === 'object' ? '[' + MODULE_DATA.name + ']' : '');
let subst = LogLevelMap[level].color;
if (asObject) {
msg += ' %o';
} else {
switch (typeof(logContent)) {
case 'string':
msg += ' %s';
break;
case 'number':
msg += ' %d';
break;
case 'object':
msg += ' %o';
break;
}
}
if (++DoLog.logCount > 512) {
console.clear();
DoLog.logCount = 0;
}
console.log(msg, subst, logContent);
}
}
const dealed = [];
let count = 0;
const interval = setInterval(deal, 1000);
function deal() {
// Max: 40 time deals
if (++count > 40) {
clearInterval(interval);
return false;
}
// Get iframes & <html>s
const iframes = $All('iframe[id^="ueditor"]');
const htmls = Array.from(iframes).concat([document.head.parentElement]).map((elm) => {
// Repeat check
if (dealed.includes(elm)) {
// Dealed iframe, skip
return false;
} else {
// Push into dealed list
dealed.push(elm);
}
// Get <html>
if (elm.contentDocument) {
// Get success
DoLog('success', elm);
const html = elm.contentDocument.head.parentElement;
return html;
} else {
// Get failed (Access denied maybe);
DoLog('denied', elm);
return null;
}
});
// Add listener
htmls.forEach((html) => (html && html.addEventListener('paste', function(e) {e.stopImmediatePropagation();}, true)));
htmls.some(h => h) && DoLog(htmls);
return true;
}
// Basic functions
// querySelector
function $() {
switch(arguments.length) {
case 2:
return arguments[0].querySelector(arguments[1]);
break;
default:
return document.querySelector(arguments[0]);
}
}
// querySelectorAll
function $All() {
switch(arguments.length) {
case 2:
return arguments[0].querySelectorAll(arguments[1]);
break;
default:
return document.querySelectorAll(arguments[0]);
}
}
// createElement
function $CrE() {
switch(arguments.length) {
case 2:
return arguments[0].createElement(arguments[1]);
break;
default:
return document.createElement(arguments[0]);
}
}
})();