Skip to content

Instantly share code, notes, and snippets.

@TCotton
Last active August 29, 2015 14:05
Show Gist options
  • Save TCotton/bff429ea4ce80db8edc4 to your computer and use it in GitHub Desktop.
Save TCotton/bff429ea4ce80db8edc4 to your computer and use it in GitHub Desktop.
jsonp.js
/**
* @function _jsonpCall
* @description function for JSONP
* Uses JSONP, adds content to page, adds the image error event and a click event that is used
* to record the product ID when the user clicks on the link
* @param categoryIdentifier {string}
* @param dssid {string}
* @private
*
*/
var _jsonpCall = function (categoryIdentifier, dssid) {
categoryIdentifier = categoryIdentifier || 0;
dssid = dssid || 0;
var timeoutVar;
var url;
var returnedData = false;
if (timeoutVar) {
clearTimeout(timeoutVar);
}
url = '//dailybuild.develevaate.com/portal/public/slots/' + encodeURIComponent(categoryIdentifier) + '/' + encodeURIComponent(dssid) + '/space.html';
_JSONP(url, 'jsoncallback', function (data) {
var elevaate;
returnedData = true;
if (data !== 'nocontent') {
document.getElementById('elevaate-container').innerHTML = data;
elevaate = document.getElementById('elevaate');
}
if (typeof elevaate !== 'undefined') {
var i = document.createElement('img');
if (document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#Shape', '1.0')) {
i.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Nzg5NjE5RjMxNzZCMTFFNDkxMzNGNDA5OUI5OTVBRjQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Nzg5NjE5RjQxNzZCMTFFNDkxMzNGNDA5OUI5OTVBRjQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3ODk2MTlGMTE3NkIxMUU0OTEzM0Y0MDk5Qjk5NUFGNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3ODk2MTlGMjE3NkIxMUU0OTEzM0Y0MDk5Qjk5NUFGNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==';
} else {
i.src = 'http://elevaate-testing.andywalpole.me/elevaate-errors.gif';
}
i.className = 'clickOnLink';
i.style.display = 'none';
elevaate.appendChild(i);
_imageErrorReporting(elevaate.getElementsByTagName('img'));
_addEventListener(elevaate, 'click', function (event) {
var prodID;
var ev = _event(event);
ev.t = _target(ev);
var _findProductID = function (target) {
var productId;
while (target) {
if (_hasAttribute(target, 'data-id')) {
if (target.dataset) {
productId = target.dataset.id;
} else {
productId = target.getAttribute('data-id');
}
return productId;
}
target = target.parentNode;
}
};
prodID = _findProductID(ev.t);
var _updateClickLog = function () {
var productImage = _elevaateGetElementsByClassName('clickOnLink');
if (prodID && productImage[0].src) {
productImage[0].src = 'http://elevaate-testing.andywalpole.me/click-image.php?userAgent=' + encodeURIComponent(window.navigator.userAgent) + '&idClicked=' + encodeURIComponent(prodID);
}
_removeEventListener(window, 'pagehide', _updateClickLog);
};
if ('onpagehide' in window) {
_addEventListener(window, 'pagehide', _updateClickLog);
} else {
var img = new Image();
img.src = 'http://elevaate-testing.andywalpole.me/click-image.php?userAgent=' + encodeURIComponent(window.navigator.userAgent) + '&idClicked=' + encodeURIComponent(prodID);
}
});
}
});
timeoutVar = setTimeout(function () {
if (returnedData) {
clearTimeout(timeoutVar);
} else {
_logError('&jsnopNotLoaded=' + encodeURIComponent(url).replace(/([.*+?^${}()|\[\]\/\\])/g, '\\$1'));
}
}, 2000);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment