Greasy Fork is available in English.
移除icve考试期间切换屏幕检查的方法
// ==UserScript==
// @name 移除执教云/智慧职教/icve平台的事件监听器
// @namespace http://tampermonkey.net/
// @version 1.1
// @description 移除icve考试期间切换屏幕检查的方法
// @author Yitong233
// @match *://*.icve.com.cn/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
function removeMethods() {
// 假设这些方法存在于某个对象中,例如 `exam`
let objNames = ['exam', 'someOtherObject']; // 根据实际情况调整对象名称
objNames.forEach(name => {
if (window[name] && typeof window[name] === 'object') {
let obj = window[name];
if (obj.winFlag && typeof obj.winFlag === 'function') {
obj.winFlag = function() {
console.log(name + '.winFlag function removed.');
};
}
if (obj.check && typeof obj.check === 'function') {
obj.check = function() {
console.log(name + '.check function removed.');
};
}
if (obj.onVisibilityChange && typeof obj.onVisibilityChange === 'function') {
obj.onVisibilityChange = function() {
console.log(name + '.onVisibilityChange function removed.');
};
}
if (obj.onmouseleaveChange && typeof obj.onmouseleaveChange === 'function') {
obj.onmouseleaveChange = function() {
console.log(name + '.onmouseleaveChange function removed.');
};
}
if (obj.isScreen && typeof obj.isScreen === 'function') {
obj.isScreen = function() {
console.log(name + '.isScreen function removed.');
};
}
}
});
// 如果方法存在于 Vue 组件中
if (window.Vue) {
Vue.mixin({
beforeCreate() {
if (this.$options.methods) {
if (this.$options.methods.winFlag) {
this.$options.methods.winFlag = function() {
console.log('winFlag function removed.');
};
}
if (this.$options.methods.check) {
this.$options.methods.check = function() {
console.log('check function removed.');
};
}
if (this.$options.methods.onVisibilityChange) {
this.$options.methods.onVisibilityChange = function() {
console.log('onVisibilityChange function removed.');
};
}
if (this.$options.methods.onmouseleaveChange) {
this.$options.methods.onmouseleaveChange = function() {
console.log('onmouseleaveChange function removed.');
};
}
if (this.$options.methods.isScreen) {
this.$options.methods.isScreen = function() {
console.log('isScreen function removed.');
};
}
}
}
});
}
}
function removeVisibilityChangeListeners() {
const originalDocumentAddEventListener = document.addEventListener.bind(document);
document.addEventListener = function(type, listener, options) {
if (type === 'visibilitychange') {
console.log('VisibilityChange listener prevented:', listener);
} else {
originalDocumentAddEventListener(type, listener, options);
}
};
// 清除已经存在的 visibilitychange 事件监听器
const events = getEventListeners(document);
const visibilityChangeListeners = events.visibilitychange || [];
visibilityChangeListeners.forEach(listener => {
document.removeEventListener('visibilitychange', listener.listener);
});
console.log('All visibilitychange listeners removed');
}
// 延迟执行以确保目标脚本已加载
setTimeout(() => {
removeMethods();
removeVisibilityChangeListeners();
}, 3000);
})();