diff --git a/docs/configuration.md b/docs/configuration.md index f1fbce04a..bb5df138c 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -72,7 +72,9 @@ window.$docsify = { - Type: `Boolean` - Default: `false` -If `loadSidebar` and `autoHeader` are both enabled, for each link in `_sidebar.md`, prepend a header to the page before converting it to HTML. See [#78](https://github.com/docsifyjs/docsify/issues/78). +If `loadSidebar` and `autoHeader` are both enabled, for each link in `_sidebar.md`, prepend a header to the page before converting it to HTML — but only if the page does not already contain an H1 heading. + +For more details, see [#78](https://github.com/docsifyjs/docsify/issues/78). ```js window.$docsify = { diff --git a/src/core/render/index.js b/src/core/render/index.js index 3ee35513b..85b6e7200 100644 --- a/src/core/render/index.js +++ b/src/core/render/index.js @@ -342,11 +342,15 @@ export function Render(Base) { if (autoHeader && activeEl) { const main = dom.getNode('#main'); - const firstNode = main.children[0]; - if (firstNode && firstNode.tagName !== 'H1') { - const h1 = this.compiler.header(activeEl.innerText, 1); - const wrapper = dom.create('div', h1); - dom.before(main, wrapper.children[0]); + const hasH1 = main.querySelector('h1'); + + if (!hasH1) { + const h1HTML = this.compiler.header(activeEl.innerText, 1); + const h1Node = dom.create('div', h1HTML).firstElementChild; + + if (h1Node) { + dom.before(main, h1Node); + } } } }