We Recommend

Pro JavaScript Techniques Pro JavaScript Techniques
Pro JavaScript Techniques is the ultimate JavaScript book for the modern web developer. It provides everything you need to know about modern JavaScript, and shows what JavaScript can do for your web sites. This book doesn't waste any time looking at things you already know, like basic syntax and structures.


Posted By

ChaosKaizer on 11/23/07


Tagged

javascript DOM snippet


Versions (?)


jitScript - safe append javascript with registry handler. prevent duplicated


Published in: JavaScript 


URL: http://blog.kaizeku.com

var lib = ['foo.js','foo.js','foo2.js','foo.js','foo333.js','foo2.js']; var slib = 'fooooo.js';

lib.jitScript(); // append foo.js, foo2.js & foo33.js slib.jitScript(); // append fooooo.js

enable firebug console JitScriptDebug = true;

validate scripts lib.isJsLoad();

  1. var regJs = "";
  2. var JitScriptDebug = false;
  3.  
  4. var kaizekuJitScript = {
  5. src: function(){ kaizekuJitScript.jitScript(this);},
  6. jitScript: function(src){
  7. var iArray = (src instanceof Array) ? src : src.split(/s*,s*/) ;
  8. for (i = 0; m = iArray.length, i < m; i++){
  9. var uri = iArray[i];
  10. if (regJs.indexOf(uri) ==- 1) {
  11. var s = document.createElement('script');
  12. s.src = uri;
  13. if (s instanceof Object){
  14. try{
  15. document.body.appendChild(s);
  16. } catch(e){
  17. document.write('<script type="text/javascript" src="'+uri+'"><\/script>');
  18. }
  19. }
  20. regJs += uri + "|";
  21. } else {
  22. if (JitScriptDebug){
  23. kaizekuJitScript.fireBuglog("Reject duplicated entries: %s",uri);
  24. kaizekuJitScript.displayloadedJS();
  25. }
  26. }
  27. }
  28. },
  29. isJsLoad: function(){
  30. var iArray = (this instanceof Array) ? this : this.split(/s*,s*/) ;
  31. var d = regJs;
  32. for (i = 0; m = iArray.length, i < m; i++){
  33. var n = iArray[i];
  34. var r = (d.indexOf(n) ==- 1) ? false : true;
  35. if (JitScriptDebug) kaizekuJitScript.fireBuglog(n + " %s",r);
  36. return r;
  37. }
  38. },
  39. fireBuglog:function(str,ref){ if(typeof console != "undefine") { console.log(str,ref)} },
  40.  
  41. displayloadedJS:function(display){
  42. var ln = 'Loaded script\n', js = regJs.split("|");
  43. for(var i =0; i < (js.length - 1 ); i++){
  44. var str = '('+(i+1)+') : ' + js[i] + '\n'; ln += str;
  45. }
  46. ( (display == false ) ? alert(ln) : kaizekuJitScript.fireBuglog("%s",ln) );
  47. }
  48. };
  49.  
  50. Array.prototype.jitScript = kaizekuJitScript.src;
  51. String.prototype.jitScript = kaizekuJitScript.src;
  52. Array.prototype.isLoadJs = kaizekuJitScript.isJsLoad;
  53. String.prototype.isLoadJs = kaizekuJitScript.isJsLoad;

Report this snippet 

Comments

RSS Icon Subscribe to comments
Posted By: ChaosKaizer on November 23, 2007

there is missing letter online 17 <\/script>');

You need to login to post a comment.