$('html').animate({ 'scrollTop': $('body').height() }, 3000);
$.ajax
$.get
и $.post
возвращают как раз этот самый объект Deferred (совместимый с промисами). $.post('/en/save-lists', {}).then(function(res) {
console.log('Успех', res);
}, function(err) {
console.error('Ошибка', err);
});
document.domain = 'site.com';
(async function() {
var base64 = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjQ1OXB4IiBoZWlnaHQ9IjQ1OXB4IiB2aWV3Qm94PSIwIDAgNDU5IDQ1OSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDU5IDQ1OTsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPGcgaWQ9InNoYXJlIj4NCgkJPHBhdGggZD0iTTQ1OSwyMTYuNzVMMjgwLjUsMzguMjV2MTAyYy0xNzguNSwyNS41LTI1NSwxNTMtMjgwLjUsMjgwLjVDNjMuNzUsMzMxLjUsMTUzLDI5MC43LDI4MC41LDI5MC43djEwNC41NUw0NTksMjE2Ljc1eiIvPg0KCTwvZz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg0K';
var blob = await (await fetch(base64)).blob();
var url = URL.createObjectURL(blob);
document.querySelector('img').src = url; // Заменить селектор на свой
})();
// Обработчик для запуска кода сразу по готовности документа:
document.addEventListener('DOMContentLoaded', async function() {
console.log('Ищем элемент .test, точнее ждем его появления...');
var els = await waitElements('.test');
console.log('Найдено элементов: ' + els.length + ' шт. Удаляем...');
els.forEach(function(el) {
el.remove();
});
});
// Ожидание элемента:
function waitElements(selector) {
return new Promise(function(returnResult) {
var search_result = false;
var local_reactive_function = function() {
var wait_elements = document.querySelectorAll(selector);
if (wait_elements.length > 0) {
if (search_result === false) {
search_result = true;
observer.disconnect();
returnResult(wait_elements);
}
}
}
var observer = new MutationObserver(local_reactive_function);
observer.observe(document.body, {
characterData: true,
attributes: true,
childList: true,
subtree: true
});
local_reactive_function();
});
}
<span id="<?php echo $todo['id']?>" onclick="removeToDo(this)" class="remove-to-do">x</span>
<script>
function removeToDo(e) {
var response = await (await fetch('app/remove.php', {
method: 'POST',
headers: { 'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8' },
body: new URLSearchParams({ id: e.getAttribute('id') }).toString()
})).text();
console.log('Ответ сервера', response);
}
</script>
document.body.addEventListener('click', function(e) {
console.log('Произведён клик по элементу', e.target);
});
e.target
нужным вам условиям можно проверять через метод matches. (async function() {
var blob = await (await fetch('https://dr.habracdn.net/qna/637b1a73/images/favicons/apple-touch-icon-180x180.png')).blob();
var file = new File([ blob ], 'Favicon.png', { type: blob.type });
console.log(file);
})();
(async () => {
const response = await (await fetch('https://report.alta.ru/api/v1/docs/apikey/hash', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({ 'query': Context.data._tc })
})).json();
console.log('Получен следующий ответ:', response);
})();
response
что хочешь - это объект, уже распарсенный JSON.