1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /** @license
- * RequireJS plugin for async dependency load like JSONP and Google Maps
- * Author: Miller Medeiros
- * Version: 0.1.2 (2014/02/24)
- * Released under the MIT license
- */
- define(function(){
- var DEFAULT_PARAM_NAME = 'callback',
- _uid = 0;
- function injectScript(src){
- var s, t;
- s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = src;
- t = document.getElementsByTagName('script')[0]; t.parentNode.insertBefore(s,t);
- }
- function formatUrl(name, id){
- var paramRegex = /!(.+)/,
- url = name.replace(paramRegex, ''),
- param = (paramRegex.test(name))? name.replace(/.+!/, '') : DEFAULT_PARAM_NAME;
- url += (url.indexOf('?') < 0)? '?' : '&';
- return url + param +'='+ id;
- }
- function uid() {
- _uid += 1;
- return '__async_req_'+ _uid +'__';
- }
- return{
- load : function(name, req, onLoad, config){
- if(config.isBuild){
- onLoad(null); //avoid errors on the optimizer
- }else{
- var id = uid();
- //create a global variable that stores onLoad so callback
- //function can define new module after async load
- window[id] = onLoad;
- injectScript(formatUrl(req.toUrl(name), id));
- }
- }
- };
- });
|