switch to doneEach and cache #main dom
This commit is contained in:
parent
1aa6636ba8
commit
9c54bafae4
8 changed files with 27 additions and 33 deletions
|
|
@ -2,27 +2,22 @@ this.D = this.D || {};
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
var scriptReg = /<script[^>]*src=["|'](.*)["|']>[^\w]*<\/script>/;
|
||||
var asyncReg = /<script[^>]*\s+async/;
|
||||
var deferReg = /<script[^>]*\s+defer/;
|
||||
function handleExternalScript () {
|
||||
var container = Docsify.dom.getNode('#main');
|
||||
var script = Docsify.dom.find(container, 'script');
|
||||
|
||||
function handleExternalScript (html) {
|
||||
var scriptMatch = html.match(scriptReg);
|
||||
if (script && script.src) {
|
||||
var newScript = document.createElement('script');['src', 'async', 'defer'].forEach(function (attribute) {
|
||||
newScript[attribute] = script[attribute];
|
||||
});
|
||||
|
||||
if (scriptMatch && scriptMatch.length > 1) {
|
||||
var script = document.createElement('script');
|
||||
script.src = scriptMatch[1];
|
||||
|
||||
if (asyncReg.test(scriptMatch[0])) { script.setAttribute('async', ''); }
|
||||
if (deferReg.test(scriptMatch[0])) { script.setAttribute('defer', ''); }
|
||||
|
||||
var target = document.querySelector('#main');
|
||||
target.appendChild(script);
|
||||
script.parentNode.removeChild(script);
|
||||
container.appendChild(newScript);
|
||||
}
|
||||
}
|
||||
|
||||
var install = function (hook) {
|
||||
hook.afterEach(handleExternalScript);
|
||||
hook.doneEach(handleExternalScript);
|
||||
};
|
||||
|
||||
window.$docsify.plugins = [].concat(install, window.$docsify.plugins);
|
||||
|
|
|
|||
2
lib/plugins/external-script.min.js
vendored
2
lib/plugins/external-script.min.js
vendored
|
|
@ -1 +1 @@
|
|||
this.D=this.D||{},function(){"use strict";function t(t){var i=t.match(c);if(i&&i.length>1){var r=document.createElement("script");r.src=i[1],e.test(i[0])&&r.setAttribute("async",""),s.test(i[0])&&r.setAttribute("defer","");var n=document.querySelector("#main");n.appendChild(r)}}var c=/<script[^>]*src=["|'](.*)["|']>[^\w]*<\/script>/,e=/<script[^>]*\s+async/,s=/<script[^>]*\s+defer/,i=function(c){c.afterEach(t)};window.$docsify.plugins=[].concat(i,window.$docsify.plugins)}();
|
||||
this.D=this.D||{},function(){"use strict";function i(){var i=Docsify.dom.getNode("#main"),n=Docsify.dom.find(i,"script");if(n && n.src){var c=document.createElement("script");["src","async","defer"].forEach(function(i){c[i]=n[i]}),n.parentNode.removeChild(n),i.appendChild(c)}}var n=function(n){n.doneEach(i)};window.$docsify.plugins=[].concat(n,window.$docsify.plugins)}();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue