我想为鹅毛笔编辑器的每个
id
添加一个 uniq p block
。
我已经尝试过这段代码,但它只为每个
id
添加相同的p block
。
const BlockBlot = Quill.import('blots/block');
class CustomBlockBlot extends BlockBlot {
static create(value) {
const node = super.create(value);
node.setAttribute('id', Math.random());
return node;
}
}
Quill.register('formats/block', CustomBlockBlot);
const quill = new Quill('#surface-render', {
theme: 'snow',
modules: {
toolbar: toolbarOptions
}
});
你会怎么做?
我可能可以解决您的问题!这种方法动态地将 ID 添加到 React Quill 编辑器中的标题(h1、h2、h3),确保它们与标题内容匹配。 您可能需要修改它以满足您的需求。
function addIdsToHeadings(quill, options) {
if (!options.enable) return;
const processHeadings = () => {
const headings = quill.container.querySelectorAll('h1, h2, h3');
headings.forEach((heading) => {
const text = heading.innerText || heading.textContent || '';
const newId = text.trim().replace(/\s+/g, '-').toLowerCase();
if (text.trim() && heading.id !== newId) {
// Update ID only if it differs from the current one
heading.id = newId;
}
});
};
const debouncedProcess = debounce(processHeadings, 200); // Debounce to optimize performance
// Monitor text changes to add or update IDs
quill.on('text-change', debouncedProcess);
}
然后添加
enable
选项
const modules = {
toolbar: {
container: '#toolbar'
},
addIdsToHeadings: {
enable: true
}
};