UNPKG

lenye_base

Version:

基础方法

90 lines (77 loc) 1.92 kB
import './get_tag.js'; import isFunction from './is_function.js'; import isString from './is_string.js'; import './ifnodeorbrowser.js'; import './windowsimulate.js'; import ua from './ua.js'; import attr from './attr.js'; import c from './c.js'; import hash from './hash.js'; /* eslint-disable no-invalid-this */ /** * load js * 1. bbo.loadjs("//your_url/a.js",func); * 2. bbo.loadjs("//your_url/a.js","only_id",func); */ var _cache = { urls: {}, logs: {} }; var _insertScripts = function (arr, callback) { for (var i = 0; i < arr.length; i++) { _insertScript(arr[i], loaded); } var _index = 0; function loaded() { _index++; if (_index >= arr.length) { callback && callback(); } } }; var _insertScript = function (src, callback) { var script = c('script'); attr(script, 'type', 'text/javascript'); attr(script, 'src', src); attr(script, 'charset', 'utf-8'); document.getElementsByTagName('head')[0].appendChild(script); if (/msie/.test(ua('l'))) { script.onreadystatechange = function () { if (this.readyState === 'loaded' || this.readyState === 'complete') { callback(); } }; } else if (/gecko/.test(ua('l'))) { script.onload = function () { callback(); }; } else { setTimeout(function () { callback(); }, 50); } }; function loadjs(url, b, c) { var onlyId; var callback; if (isFunction(b)) { onlyId = String(hash(String(url))); callback = b; } else if (typeof b === 'undefined') { onlyId = String(hash(String(url))); callback = null; } else { onlyId = String(b); callback = c; } if (_cache.urls[onlyId]) { callback && callback(); } else { var func = isString(url) ? _insertScript : _insertScripts; func.call(this, url, function () { _cache.urls[onlyId] = true; callback && callback(); }); } } export default loadjs;