var params = {
callbacks:{
onTotalScroll: function() {
console.log('Конец');
}
}
};
console.log('getChartData', 'Одиночный запрос завершен успешно', index);
здесь и делайте что нужно /**
* Returns a scrollbar width
* @private
* @returns {Number}
*/
function getScrollbarWidth() {
if ($(document).height() <= $(window).height()) {
return 0;
}
var outer = document.createElement('div');
var inner = document.createElement('div');
var widthNoScroll;
var widthWithScroll;
outer.style.visibility = 'hidden';
outer.style.width = '100px';
document.body.appendChild(outer);
widthNoScroll = outer.offsetWidth;
// Force scrollbars
outer.style.overflow = 'scroll';
// Add inner div
inner.style.width = '100%';
outer.appendChild(inner);
widthWithScroll = inner.offsetWidth;
// Remove divs
outer.parentNode.removeChild(outer);
return widthNoScroll - widthWithScroll;
}
var data = {};
ajaxAll(['BTC', 'ETH', 'LTC'], function(crypto) {
return $.ajax({
url: 'https://apiv2.bitcoinaverage.com/indices/global/ticker/' + crypto + 'USD',
method: 'GET',
dataType: 'json',
success: function(response) {
data = $.extend({}, data || {}, getObjectWithKey(crypto, response));
}
});
}).done(function() {
console.log(data);
appendResult($('body'), data, function(item) {
return `
<div class="item">
<div class="item-price">$${item.changes.price.day}</div>
</div>
`;
});
});
function appendResult($container, data, callback) {
var collection = [];
for (var item in data) {
$.merge(collection, $(callback.call($container, data[item])));
}
$container.append(collection);
}
function ajaxAll(array, each) {
var promise = [];
array.forEach(function() {
promise.push(each.apply(null, arguments));
});
return $.when.apply(null, promise);
}
function getObjectWithKey(key, value) {
var object = {};
object[key] = value;
return object;
}
/**
* Получить/установить значение объекта передав путь строкой ('price.current.USD')
* @param {object} object - объект
* @param {string} key - путь к свойству
* @param {any} value - значение
* @returns {any} - значение свойства объекта
**/
function nestedObjectPath(object, key, value) {
var path = key.split('.');
var get = function(path, object) {
return path.reduce(function(previous, current) {
return previous[current];
}, object);
};
if (value) {
var way = path.pop();
get(path, object)[way] = value;
return object;
} else {
return get(path, object);
}
}
var object = {
object: {
param: {
key: 'value'
}
}
};
nestedObjectPath(object, 'object.param.key');
//> "value"
// Установить занчения
nestedObjectPath(object, 'object.param.key', 'new Value');
tag('{base}/{path}/{language}/files/{language}/{path}/{file}.{format}', {
base: 'https://example.com',
path: 'js/FormJS',
language: 'en',
file: 'config',
format: 'js'
});
//>"https://example.com/js/FormJS/en/files/{language}/{path}/config.js"
$.globalEval( string js кода )
или простой аналог: