要实现你描述的功能,可以编写一个油猴脚本(Tampermonkey script)来动态调整所有 <textarea>
元素的行高,并且使其在检测到页面变化时重新运行调整代码,而不是依赖保存按钮。以下是更新后的脚本:
“`javascript
// ==UserScript==
// @name Auto Resize Textarea
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Auto resize textarea based on content
// @author Your Name
// @match https://platform.amfori.org/ui/*
// @grant none
// ==/UserScript==
(function() {
‘use strict’;
// Function to auto-resize textareas
function autoResizeTextarea(textarea) {
textarea.style.height = 'auto';
textarea.style.height = `${textarea.scrollHeight}px`;
}
// Apply auto-resize to all textareas on the page
function applyAutoResize() {
const textareas = document.querySelectorAll('textarea');
textareas.forEach(textarea => {
textarea.addEventListener('input', () => autoResizeTextarea(textarea));
autoResizeTextarea(textarea);
});
}
// Observe the whole document for changes (in case new textareas are added dynamically)
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.addedNodes.length || mutation.removedNodes.length) {
applyAutoResize();
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
// Initial call to apply auto-resize on page load
applyAutoResize();
})();
“`
说明:
- 自动调整行高:
autoResizeTextarea
函数调整<textarea>
的高度以适应其内容。-
applyAutoResize
函数为页面上的所有<textarea>
元素绑定input
事件,以便在内容更改时调整高度。 -
页面加载时应用:
-
脚本在页面加载时立即调用
applyAutoResize
以调整当前页面上的所有<textarea>
。 -
观察 DOM 变化:
- 使用
MutationObserver
观察整个文档的变化(例如,动态添加或移除<textarea>
元素)。 - 当检测到 DOM 变化(子元素添加或移除)时,调用
applyAutoResize
重新调整所有<textarea>
的高度。
这样,脚本会在页面任何变化时重新运行调整代码,确保所有 <textarea>
元素能根据内容自适应行高。