//------------------------------------------------------------------------------------------------ // Engines JavaScript 1.2+ // JScript 3+ // Environments NN6+ IE5+ MOZILLA1+ SAFARI1+ // DOM Level 1 Core //------------------------------------------------------------------------------------------------ function included (s /* scr */, t /* tag-name (head by default) */) { var d; if (!t) t = 'head'; if (typeof s == 'string' && (d = s.indexOf('../')) != -1) s = s.substr(d + 3); d = document; t = d.getElementsByTagName(t); for (var i = 0, l = t.length, e; i < l; ++i) { e = t[i].getElementsByTagName('script'); for (var j = 0, n = e.length; j < n; ++j) if (e[j].src && (s.test ? s.test(e[j].src) : e[j].src.lastIndexOf(s) != -1)) return true; } return false; }
Uso:
if (!included('my-file.js')) { // TODO... }
Incluye uno o varios scripts (en la sección de cabecera por defecto):
//------------------------------------------------------------------------------------------------ // Engines JavaScript 1.2+ // JScript 3+ // Environments NN6+ IE5+ MOZILLA1+ SAFARI1+ // DOM Level 1 Core //------------------------------------------------------------------------------------------------ function include (/* arg1 [, ... [, argN]] */) { var r = '', x = r; for (var d = document, i = 0, a = arguments, l = a.length, e, s; i < l; ++i) { if ((s = a[i]).root && (r = s.root + '').length > 0 && r.lastIndexOf('/') != r.length - 1) r += '/'; if (s.extension && (x = s.extension + '').length > 0 && x.indexOf('.') != 0) x = '.' + x; if (s.src || typeof s == 'string') { e = d.createElement('script'); e.setAttribute('src', r + (s.src ? s.src : s) + x); e.setAttribute('type', s.type ? s.type : 'text/javascript'); if (typeof s.onload == 'function') { if (e.readyState) { e.onreadystatechange = function () { if (this.readyState == 'loaded' || this.readyState == 'complete') { delete this.onreadystatechange; this.loaded(); } } e.loaded = s.onload; } else e.onload = s.onload; } d.getElementsByTagName(s.tag ? s.tag : 'head')[0].appendChild(e); } } }
Uso:
if (!included('my-file1.js') && !included('my-file2.js')) include ( {root: 'my-path', extension: 'js'} , {src: 'my-file1', onload: function () { /* TODO... */ }} , {src: 'my-file2', onload: function () { /* TODO... */ }} ); if (!included('my-file4.js')) include({src: 'my-file4.js', onload: function () { /* TODO... */ }});
Existe otro modo de hacerlo, usando ajax:
//------------------------------------------------------------------------------------------------ // Engines JavaScript 1.2+ // JScript 3+ // Environments NN7.1+ IE5+ MOZILLA1+ SAFARI1.2+ //------------------------------------------------------------------------------------------------ function loadscript (s /* url */, b /* eval? (Boolean) */) { var r, x, w = window; if (w && w.XMLHttpRequest) r = new w.XMLHttpRequest(); else if (typeof Components != 'undefined' && Components.classes) // XPCOM! { try { r = Components.classes['@mozilla.org/xmlextras/xmlhttprequest;1'].createInstance ( Components.interfaces.nsIXMLHttpRequest ); } catch (e) { r = null; } } else if ((x = w.ActiveXObject) || (x = w.GeckoActiveXObject)) { try { r = new x('Msxml2.XMLHTTP'); } catch (e) { try { r = new x('Microsoft.XMLHTTP'); } catch(e) { r = null; } } } if (r) { r.open('GET', s, false); r.send(null); if (r.readyState == 4 && r.status == 200) { if (b) eval(r.responseText); else { (w = (x = document).createElement('script')).setAttribute('type', 'text/javascript'); w.text = r.responseText; x.getElementsByTagName('head')[0].appendChild(w); } return true; } } return false; }
Uso:
if (loadscript('my-file1.js')) { //TODO... } loadscript('my-file2.js', true);
No hay comentarios:
Publicar un comentario