var dt = new DataTransfer(); // Создадим объект для работы с drag and drop
dt.items.add(file1); // Добавим первый файл
dt.items.add(file2); // Добавим второй файл
var file_list = dt.files; // Извлечем FileList
console.log('Коллекция файлов создана:');
console.dir(file_list);
// Вставим созданную коллекцию в реальное поле:
document.querySelector('input[type="file"]').files = file_list;
Чтобы использовать JSON в другом месте кода, но везде получаю Undefined
$.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>