为IPE添加F11全屏功能
// ==UserScript==
// @name IPE禅模式
// @namespace https://thdog.moe/
// @version 0.4
// @description 为IPE添加F11全屏功能
// @author shirokurakana
// @match *://thwiki.cc/*
// @icon https://static.thbwiki.cc/favicon.ico
// @license MIT
// @grant none
// ==/UserScript==
(function() {
'use strict';
let isIPEFullScreen = false;
// 配置参数
const config = { childList: true, subtree: true };
// 创建观察者
const observer = new MutationObserver((mutations, obs) => {
let preview = document.querySelector('.InPageEditPreview')
if (preview) {
preview.classList.add("mw-body-content");
preview.style.color='var(--mw-color-base)';
preview.style.backgroundColor='var(--mw-background-color-content)';
}
let wraps = document.getElementsByClassName('ssi-modalWrapper');
if (document.querySelector('.ssi-modalWrapper')) {
for (let i = 0; i < wraps.length; i++) {
let wrap = wraps[i];
if (wrap.firstChild === null) continue;
let children = wrap.firstChild.children
for (let j = 0; j < children.length; j++){
children[j].style.color = 'var(--mw-color-base)';
children[j].style.background='var(--mw-background-color-content)';
}
}
}
if (document.querySelector('.monaco-container')) {
if (wraps.length > 1) {
for (let i = 0; i < wraps.length; i++) {
let wrap = wraps[i];
let delWrap = false;
if (wrap.firstChild === null) {
delWrap=true;
}
else if (wrap.firstChild.id.search('ssi-notify') != -1) {
delWrap=true;
}
if (delWrap) {
let parent = wrap.parentElement;
parent.removeChild(wrap);
i--;
}
}
}
if (isIPEFullScreen) {
isIPEFullScreen = true;
setTimeout(() => {
setFullScreen();
}, 200);
}
}
});
// 开始观察
observer.observe(document.documentElement, config);
// 监听键盘事件
document.addEventListener('keydown', function(event) {
// 检测按下的键是否是F11
if (event.key === 'F11' || event.keyCode === 122) { // 双重兼容判断
// 阻止浏览器默认全屏行为(可选)
event.preventDefault();
if (document.querySelector('.monaco-container') === null) {
document.querySelector('#edit-btn').click();
isIPEFullScreen = true;
setTimeout(() => {
setFullScreen();
}, 500);
}
else {
if (isIPEFullScreen) {
unsetFullScreen();
isIPEFullScreen = false;
} else {
setFullScreen();
isIPEFullScreen = true;
}
}
}
});
function setFullScreen() {
document.querySelector('.monaco-container').style.height = '640px';
document.querySelector('#ssi-modalWrapper').style.width = '100%';
document.querySelector('#ssi-modalWrapper').style.maxWidth = 'unset';
document.querySelector('#ssi-modalWrapper').style.margin = '0 auto';
}
function unsetFullScreen() {
document.querySelector('.monaco-container').style.height = '386px';
document.querySelector('#ssi-modalWrapper').style.width = '85%';
document.querySelector('#ssi-modalWrapper').style.maxWidth = '900px';
document.querySelector('#ssi-modalWrapper').style.margin = '30px auto 20px';
}
})();