Execute script when vue exists.

This commit is contained in:
qingwei.li
2017-01-24 10:06:38 +08:00
parent d179ade7df
commit 9abae495ac
4 changed files with 22 additions and 10 deletions

View File

@@ -1,3 +1,10 @@
## 1.8.0
### Bug fixes
- Using `v-pre` skip compilation.
### Features
- Execute script when vue exists.
## 1.7.4
### Bug fixes
- Fix bugs caused by the previous version

View File

@@ -1,6 +1,6 @@
![logo](_media/icon.svg)
# docsify <small>1.7.4</small>
# docsify <small>1.7.5</small>
> A magical documentation site generator.

View File

@@ -76,11 +76,10 @@ const mainRender = function (cb) {
if (OPTIONS.coverpage && page !== OPTIONS.homepage) render.renderCover()
// render sidebar
if (OPTIONS.loadSidebar) {
load(basePath + OPTIONS.loadSidebar)
.then(result => {
render.renderSidebar(result)
cb()
})
const renderSidebar = result => { render.renderSidebar(result); cb() }
load(basePath + OPTIONS.loadSidebar).then(renderSidebar,
load(OPTIONS.loadSidebar).then(renderSidebar))
} else {
cb()
}
@@ -88,7 +87,8 @@ const mainRender = function (cb) {
// Render navbar
if (OPTIONS.loadNavbar) {
load(basePath + OPTIONS.loadNavbar).then(render.renderNavbar)
load(basePath + OPTIONS.loadNavbar).then(render.renderNavbar,
() => load(OPTIONS.loadNavbar).then(render.renderNavbar))
}
}

View File

@@ -98,9 +98,14 @@ export function renderArticle (content) {
renderTo('article', content ? markdown(content) : 'not found')
if (!OPTIONS.sidebar && !OPTIONS.loadSidebar) renderSidebar()
if (content && typeof Vue !== 'undefined' && typeof Vuep !== 'undefined') {
const vm = new Vue({ el: 'main' }) // eslint-disable-line
vm.$nextTick(_ => event.scrollActiveSidebar())
if (content && typeof Vue !== 'undefined') {
const script = content.match('<script[^>]*?>([^<]+)</script>')
script && document.body.querySelector('article script').remove()
const vm = script
? new Function(`return ${script[1].trim()}`)()
: new Vue({ el: 'main' }) // eslint-disable-line
vm && vm.$nextTick(_ => event.scrollActiveSidebar())
}
if (OPTIONS.auto2top) setTimeout(() => event.scroll2Top(OPTIONS.auto2top), 0)
}