Skip to content
This repository was archived by the owner on Jan 24, 2019. It is now read-only.

Commit 83835ee

Browse files
committed
add onExists feature
1 parent 924d166 commit 83835ee

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

js.js

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
$js - asynchronous module definition framework
33
or just simple lightweight javascript dependencies manager
44
5-
@version 3.1
5+
@version 3.2
66
@link http://github.com/redcatphp/js/
77
@author Jo Surikat <jo@surikat.pro>
88
@website http://redcatphp.com
@@ -552,6 +552,43 @@
552552
$js(module,loadModuleDomElement);
553553
}
554554
};
555+
var onExists = function(s,y,n,sync){
556+
sync = sync?true:false;
557+
if(s instanceof Array){
558+
s.reverse();
559+
var ev = '$js(s'+(sync?',true':'')+',y);';
560+
for(var i = 0; i < s.length; i++){
561+
ev = '$js.onExists("'+s[i]+'",function(){'+ev+'},n);';
562+
}
563+
eval(ev);
564+
return;
565+
}
566+
var url = getSrc(s);
567+
var httpRequest;
568+
if(w.XMLHttpRequest){
569+
httpRequest = new XMLHttpRequest();
570+
}
571+
else if(w.ActiveXObject){
572+
try{
573+
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
574+
}
575+
catch(e){
576+
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
577+
}
578+
}
579+
httpRequest.open('HEAD', url, true);
580+
httpRequest.onreadystatechange = function(){
581+
if(httpRequest.readyState==4){
582+
if(httpRequest.status!=404){
583+
$js(s,sync,y);
584+
}
585+
else{
586+
n();
587+
}
588+
}
589+
};
590+
httpRequest.send();
591+
};
555592
$js = (function(){
556593

557594
//invoker
@@ -750,6 +787,7 @@
750787
}
751788
}
752789
};
790+
js.onExists = onExists;
753791
return js;
754792
})();
755793
var y = {};

0 commit comments

Comments
 (0)