You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

87 lines
2.3 KiB

(function () {
"use strict";
var API_URL_ROOT = "/expo-b/get-banners/";
var getUrl = function () {
var data = window.sendData;
if (data instanceof Object) {
var search = [];
for (var key in data) {
if (data.hasOwnProperty(key)) {
var value = data[key];
if (value instanceof Array) {
for (var i = 0, l = value.length; i < l; i++) {
search.push(encodeURIComponent(key) + "=" + encodeURIComponent(value[i]));
}
} else {
search.push(encodeURIComponent(key) + "=" + encodeURIComponent(value));
}
}
}
if (search.length) {
return API_URL_ROOT + "?" + search.join("&");
}
}
return API_URL_ROOT;
};
var getBanners = function (url, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onreadystatechange = function (event) {
if (event.target.readyState === 4) {
if (event.target.status === 200) {
try {
callback(JSON.parse(event.target.responseText));
} catch (error) {
// do nothing
}
}
}
};
xhr.send();
};
var addBanner = function (banner) {
var parent = document.getElementById(banner.id);
if (parent) {
if (banner.is_img) {
var a = document.createElement("a");
a.href = banner.url;
var img = document.createElement("img");
img.src = banner.img;
img.alt = banner.alt;
a.appendChild(img);
parent.appendChild(a);
} else if (banner.is_html) {
parent.innerHTML = banner.text;
}
}
};
var insertBanners = function (data) {
if (data instanceof Array) {
for (var i = 0, l = data.length; i < l; i++) {
addBanner(data[i]);
}
}
};
var main = function () {
getBanners(getUrl(), insertBanners);
};
window.addEventListener("load", main);
})();