JSFiddle - React, Tailwind, and code Playground

by Chase Wilson

JavaScript

(function(global){
if(!window.GEG){
    GEG = {};
}
if (!GEG._jsonp_id) {
    GEG._jsonp_id = 0;
}

GEG.JSONP = function(url, options) {
    if (!GEG._jsonp_id) {
        GEG._jsonp_id = 0;
    }
    var doc     = document,
        head    = doc.getElementsByTagName('head')[0] || doc.body, 
        script  = doc.createElement('script'), 
        token   = '__geg_jsonp_' + GEG._jsonp_id;
        
        options = Object(options, {
            params: {},
            callback_name: 'callback',
            callback: false
        });
        console.log(options);
     
     return {
        request: function(params) {
            
            params = new Hash(Object.extend(params||{},options.params));
            
            if (options.callback) {
                params.set(options.callback_name, token);
                window[token] = options.callback;
            }
            console.log(options);
            if (params.size() > 0) {
                url = url.replace(/(\?|$)/, '?'+ params.toQueryString());
            }
            script.src = url;
            // clean up on load: remove script tag, null script variable and delete global callback function
            script.onload = function() {
                script.remove();
                script = null;
                delete window[token];
            };
            head.appendChild(script);
           // callback name should be unique
           GEG._jsonp_id++;
        }  
    };
 };

})(window)
    
    
    
    var req = new GEG.JSONP('www.google.com', {callback:'woops'});