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'});