perf[Tinymce]: dynamic import tinymce(#2102)

This commit is contained in:
花裤衩
2019-05-21 10:50:10 +08:00
committed by GitHub
parent 131b9b9eff
commit 6770963672
4 changed files with 57 additions and 16 deletions

View File

@@ -0,0 +1,39 @@
const dynamicLoadScript = (src, callback) => {
const existingScript = document.getElementById(src)
const cb = callback || function() {}
if (!existingScript) {
const script = document.createElement('script')
script.src = src // src url for the third-party library being loaded.
script.id = src
document.body.appendChild(script)
const onEnd = 'onload' in script ? stdOnEnd : ieOnEnd
onEnd(script, cb)
}
if (existingScript && cb) cb(null, existingScript)
function stdOnEnd(script, cb) {
script.onload = function() {
// this.onload = null here is necessary
// because even IE9 works not like others
this.onerror = this.onload = null
cb(null, script)
}
script.onerror = function() {
this.onerror = this.onload = null
cb(new Error('Failed to load ' + src), script)
}
}
function ieOnEnd(script, cb) {
script.onreadystatechange = function() {
if (this.readyState !== 'complete' && this.readyState !== 'loaded') return
this.onreadystatechange = null
cb(null, script) // there is no way to catch loading errors in IE8
}
}
}
export default dynamicLoadScript