Fix #2216: Table of contents not clickable in read-only mode

Problem:
- In read-only mode, clicking on table of contents links does nothing
- The anchor links use CKEditor's restoreRealElement which may not work in read-only mode

Solution:
- Add fallback to find anchor by ID directly
- Use foundAnchor flag to stop searching after first match

This matches the implementation in links.js which already has this fallback.
This commit is contained in:
SliOrtega295 2026-03-06 00:06:34 +08:00
parent 5514dc7caa
commit fb0a216eb9

View File

@ -728,13 +728,21 @@ define([
var href = el.getAttribute('href');
if (/^#/.test(href)) {
try {
var foundAnchor = false;
$inner.find('.cke_anchor[data-cke-realelement]').each(function (j, el) {
if (foundAnchor) { return; }
var i = editor.restoreRealElement($(el));
var node = i.$;
if (node.id === href.slice(1)) {
el.scrollIntoView();
foundAnchor = true;
}
});
// Fallback: try to find anchor by ID directly
if (!foundAnchor) {
var anchorsById = $inner.find('#' + href.slice(1));
if (anchorsById.length) { anchorsById[0].scrollIntoView(); }
}
} catch (err) {}
return;
}