Bookmarklet для сайта ЦБ РФ
Нужно было реализовать букмарклет, который алертил бы стоимости килограмма золота в USD с точностью до сотых.
Я реализовал этот так: javascript: (function() { if (location.href.split('://').pop().replace('/', '') != 'www.cbr.ru') return !1; var f = function(c) { return { ',': '.' }[c] || ''; }, e = /\D+?/g, p = $('#widget_metal .content table tr:eq(1) td:eq(1)').text().replace(e, f) * 1e3, r = { t: [], d: [] }; $('#widget_exchange .content table tr:lt(2)').each(function(i) { r[i ? 'd' : 't'] = $.makeArray($(this).find('>*:gt(0)').map(function() { return $(this).text().replace(e, f); })); }); alert(r.t.map(function(s, i) { return s.replace(/(\d{2})(\d{2})(\d+)/, '$1.$2.$3: ') + (p / r.d[i]).toFixed(2); }).join('\n')); })(); Можно ли получить более короткое решение? |
не проверял
javascript: (function() { var f = e => $(e).text().replace(/,/g,'.').replace(/[^\d\.]/g,''), p = f($('#widget_metal .content table tr:eq(1) td:eq(1)')) * 1e3, r = {t: [], d: []}; $('#widget_exchange .content table tr:lt(2)').each((i,e) => { r[i ? 'd' : 't'] = [].map.call($(e).find('>*:gt(0)'),f); }); alert(r.t.map((s, i) => s.replace(/(\d\d)(\d\d)(\d+)/, '$1.$2.$3: ') + (p / r.d[i]).toFixed(2)).join('\n')); })(); твою строку 2 я выкинул, потому что в bookmarklet это нафиг не надо. |
Nexus,
у ЦБ РФ теперь есть SOAP для получения курсов валют, драгметаллов и прочей информации, это лучше чем парсить текст. |
laimas, в букмарклете обращаться к серверу ЦБ для получения этих данных?)
Обратиться к элементам страницы и получить нужные данные куда проще и быстрее. Нужно было просто написать букмарклет, ни больше. Это было тестовое задание перед собеседованием. |
курс доллара (строка):
$('#widget_exchange tr:has(ins:contains("$")) .w_data_wrap')[0].lastChild.data стоимость золота (строка): $('#widget_metal tr:has(ins:contains("Au")) .w_data_wrap>span').text() |
Alexandroppolus, :)
$('#widget_metal .content table tr:eq(1) td:eq(1)') $('#widget_metal tr:has(ins:contains("Au")) .w_data_wrap>span') |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
laimas, во второй строке была проверка на нахождение пользователя на указанной странице.
|
Часовой пояс GMT +3, время: 21:59. |