|
|
@@ -31,10 +31,12 @@ var oncreate = {
|
|
|
},
|
|
|
html: () => {
|
|
|
scroll()
|
|
|
+
|
|
|
if (state.content.toc && !state.toc) {
|
|
|
state.toc = toc()
|
|
|
m.redraw()
|
|
|
}
|
|
|
+
|
|
|
setTimeout(() => Prism.highlightAll(), 20)
|
|
|
}
|
|
|
}
|
|
|
@@ -100,36 +102,52 @@ function mount () {
|
|
|
}
|
|
|
|
|
|
function scroll () {
|
|
|
- if (state.content.scroll) {
|
|
|
- $('body').scrollTop = parseInt(localStorage.getItem('md-' + location.href))
|
|
|
- }
|
|
|
- else if (location.hash) {
|
|
|
- $('body').scrollTop = $(location.hash) && $(location.hash).offsetTop
|
|
|
- setTimeout(() => {
|
|
|
- $('body').scrollTop = $(location.hash) && $(location.hash).offsetTop
|
|
|
- }, 100)
|
|
|
- }
|
|
|
-}
|
|
|
-scroll.init = () => {
|
|
|
- if (state.content.scroll) {
|
|
|
- var timeout = null
|
|
|
- window.addEventListener('scroll', () => {
|
|
|
- clearTimeout(timeout)
|
|
|
- timeout = setTimeout(() => {
|
|
|
- localStorage.setItem('md-' + location.href, $('body').scrollTop)
|
|
|
- }, 100)
|
|
|
+ function race (done) {
|
|
|
+ var images = Array.from(document.querySelectorAll('img'))
|
|
|
+ if (!images.length) {
|
|
|
+ done()
|
|
|
+ }
|
|
|
+ var loaded = 0
|
|
|
+ images.forEach((img) => {
|
|
|
+ img.addEventListener('load', () => {
|
|
|
+ if (++loaded === images.length) {
|
|
|
+ done()
|
|
|
+ }
|
|
|
+ }, {once: true})
|
|
|
})
|
|
|
+ setTimeout(done, 100)
|
|
|
}
|
|
|
- setTimeout(scroll, 100)
|
|
|
+ function init () {
|
|
|
+ if (state.content.scroll) {
|
|
|
+ var key = 'md-' + location.origin + location.pathname
|
|
|
+ $('body').scrollTop = parseInt(localStorage.getItem(key))
|
|
|
+
|
|
|
+ var timeout = null
|
|
|
+ window.addEventListener('scroll', () => {
|
|
|
+ clearTimeout(timeout)
|
|
|
+ timeout = setTimeout(() => {
|
|
|
+ localStorage.setItem(key, $('body').scrollTop)
|
|
|
+ }, 100)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ else if (location.hash && $(location.hash)) {
|
|
|
+ $('body').scrollTop = $(location.hash).offsetTop
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var loaded
|
|
|
+ race(() => {
|
|
|
+ if (!loaded) {
|
|
|
+ init()
|
|
|
+ loaded = true
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
if (document.readyState === 'complete') {
|
|
|
mount()
|
|
|
- scroll.init()
|
|
|
}
|
|
|
else {
|
|
|
window.addEventListener('DOMContentLoaded', mount)
|
|
|
- window.addEventListener('load', scroll.init)
|
|
|
}
|
|
|
|
|
|
var toc = (
|