...
'keyboard' => array(
array(
array('text' => '33', 'request_contact' => true), // работает
)),
...
...
'inline_keyboard' => array(
array(
array('text' => '11', 'url' => 'https://google.com'),
array('text' => '22', 'callback_data' => 'callback')
)),
...
charCode = 0x10000 + ((leadingCode & 0x3FF) << 10) + (trailingCode & 0x3FF)
var promises = [];
ids.forEach(function(id, i) {
promise = loadSomething(id);
promises.push(promise);
});
Promise.all(promises);
var dict = {}; //загруженный словарь
function lang(key) {
var str = dict[key] || '';
var args = new Array(arguments.length);
for(var i = arguments.length; i--;) args[i] = arguments[i];
return str.replace(/\$\d+/g, function(matched) {
return args[matched.slice(1)] || matched;
};
}
<p data-lang="key"></p>
document.addEventListiner('DOMContentLoaded', function() {
var elems = document.querySelectorAll('[data-lang]');
for(var i = elems.length; i--;) {
elems[i].innerText = lang(elems[i].getAttribute('data-lang'));
}
}, false);
window.onerror = function(err, url, line, col, msg) {
var data = {
'Error': err,
'URL': url,
'Line': line,
'Column': null,
'Message': null,
'Browser': null,
'OS': null,
'Device': null
};
// HTML5 only
data['Column'] = !col ? '' : col;
data['Message'] = !msg ? '' : msg;
try {
var ua = detect.parse(navigator.userAgent);
data['Browser'] = !ua.browser.name ? '' : ua.browser.name;
data['OS'] = !ua.os.name ? '' : ua.os.name;
data['Device'] = !ua.device.name ? '' : ua.device.name;
}
catch(e) {}
console.groupCollapsed('Error: ' + data['Error']);
console.log('URL: ' + data['URL']);
console.log('Line: ' + data['Line']);
if(data['Column'])
console.log('Column: ' + data['Column']);
if(data['Message'])
console.log('Message: ' + data['Message']);
console.groupEnd();
try {
$.post('/frontend/error/', data);
}
catch(e) {}
return true; //suppressErrorAlert
};
"destination_addresses" : [ "45.8951698,34.1592261" ]
, у них санкции для Крыма, отключили обратное геокодирование и что-то ещё.