🏠 返回首頁 

Greasy Fork is available in English.

自适应宽度脚本2

自动将页面宽度调整为适合屏幕大小的宽度


Installer dette script?
// ==UserScript==
// @name         自适应宽度脚本2
// @version      2
// @description  自动将页面宽度调整为适合屏幕大小的宽度
// @match        *://*/*
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_notification
// @namespace https://greasyfork.org/users/13961
// ==/UserScript==
(function() {
var SCROLLBAR_ADJUST = 16; // 滚动条宽度的调整值
var isFit = GM_getValue('isFit', true); // 是否启用自适应宽度
function addPreWrapCSS() {
var style = document.createElement('style');
style.innerHTML = 'pre { white-space: pre-wrap; }';
document.head.appendChild(style);
}
function iter(elems, f) {
for (var i = 0; i < elems.length; i++) {
var e = elems[i];
if (f(e)) {
// 处理 e 元素
}
}
}
function fit() {
addPreWrapCSS();
var elements = document.querySelectorAll('*');
iter(elements, function(e) {
if (e.tagName === 'PRE') {
e.style.maxWidth = 'none';
}
if (e.offsetWidth > window.innerWidth - SCROLLBAR_ADJUST) {
e.style.width = '100%';
e.style.boxSizing = 'border-box';
} else {
e.style.width = 'auto';
}
});
}
function applyFit() {
isFit = !isFit;
GM_setValue('isFit', isFit);
GM_notification('自适应宽度状态已更新:' + (isFit ? '开启' : '关闭'));
window.postMessage({ cmd: 'toggle', fit: isFit }, '*');
fit();
}
function processMessage(event) {
if (event.data.cmd === 'toggle') {
applyFit();
}
}
window.addEventListener('resize', function() {
if (isFit) {
fit();
}
});
window.addEventListener('message', processMessage, false);
if (isFit) {
fit();
}
// 监听查看全部回答按钮的点击事件
var btn = document.querySelector('.QuestionMainAction');
if (btn) {
btn.addEventListener('click', function() {
// 等待回答内容加载完成后再执行自适应宽度
setTimeout(fit, 1000);
});
}
})();