(function () { Artplayer.DEBUG = true; function getURLParameters(url) { return (url.match(/([^?=&]+)(=([^&]*))/g) || []).reduce(function (a, v) { return (a[v.slice(0, v.indexOf('='))] = v.slice(v.indexOf('=') + 1)), a; }, {}); } function getExt(url) { if (url.includes('?')) { return getExt(url.split('?')[0]); } if (url.includes('#')) { return getExt(url.split('#')[0]); } return url.trim().toLowerCase().split('.').pop(); } function loadScript(url) { return new Promise(function (resolve, reject) { var define2 = window.define; window.define = undefined; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = url; script.onload = function () { window.define = define2; resolve(url); }; script.onerror = function () { reject(new Error('Loading script failed:' + url)); }; document.querySelector('head').appendChild(script); }); } function loadStyle(url) { return new Promise(function (resolve, reject) { var link = document.createElement('link'); link.rel = 'stylesheet'; link.href = url; link.onload = function () { resolve(url); }; link.onerror = function () { reject(new Error('Loading style failed:' + url)); }; document.querySelector('head').appendChild(link); }); } function loadLib(libs) { var libPromise = []; var libsDecode = decodeURIComponent(libs || ''); libsDecode .split(/\r?\n/) .forEach(function (url) { var ext = getExt(url); if (ext === 'js') { libPromise.push(loadScript(url)); } else if (ext === 'css') { libPromise.push(loadStyle(url)); } }); return Promise.all(libPromise); } function runExample(name) { fetch('./assets/example/' + name + '.js') .then(function (response) { return response.text(); }) .then(function (text) { eval(text); }) } function loadCode(code, example) { if (example) { runExample(example); } else if (code) { eval(decodeURIComponent(code).trim()); } else { runExample('mobile'); } } var _getURLParameters = getURLParameters(window.location.href), code = _getURLParameters.code, libs = _getURLParameters.libs; example = _getURLParameters.example; loadLib(libs) .then(function () { loadCode(code, example); }) })();