<script>
// Обрабочик для отслеживания готовности страницы:
document.addEventListener('DOMContentLoaded', function() {
// Ставим на форму обработчик срабатывающий при отправке формы:
document.querySelector('form').addEventListener('submit', async function() {
var this_form = this; // Получаем ссылку на форму
event.preventDefault(); // Отменяем обычную отправку
// Блокируем нажатия по форме:
this_form.style.opacity = '0.5';
this_form.style.pointerEvents = 'none';
// Блок кода для отправки формы:
try {
// Отправляем форму без перезагрузки страницы и выводим ответ сервера на месте формы, как обычный текст:
this_form.outerHTML = await (await fetch(this_form.action, { method: 'POST', body: new FormData(this_form) })).text();
}
// Блок кода для обработки ошибок:
catch(err) {
// Вывод ошибки, если вдруг отправка неудачная:
console.error(err); this_form.outerHTML = err.toString();
// Разблокируем форму:
this_form.style.opacity = '';
this_form.style.pointerEvents = '';
}
});
});
</script>
$('table#price-table > tbody > tr').sort(function(a, b) {
var one = Number($(a).children().eq(6).text().replace(/[^0-9]/g, ''));
var two = Number($(b).children().eq(6).text().replace(/[^0-9]/g, ''));
return two - one;
}).each(function(n, tr) {
$('table#price-table > tbody').append(tr);
});
var original = {
open: XMLHttpRequest.prototype.open,
send: XMLHttpRequest.prototype.send
};
XMLHttpRequest.prototype.open = function (method, url, async, user, password) {
console.log(method, url, async, user, password);
return original.open.call(this, method, url, async, user, password);
};
XMLHttpRequest.prototype.send = function (data) {
console.log(data);
return original.send.call(this, data);
};
d = $.Deferred(function(def) {
setTimeout(function() {
console.log(1);
def.resolve();
}, 1000);
});
d.then(function() {
var def = $.Deferred();
setTimeout(function() {
console.log(2);
def.resolve();
}, 1000);
return def;
})
.then(function() {
var def = $.Deferred();
setTimeout(function() {
console.log(3);
def.resolve();
}, 1000);
return def;
})
.then(function() {
var def = $.Deferred();
setTimeout(function() {
console.log(4);
def.resolve();
}, 1000);
return def;
})
.then(function() {
var def = $.Deferred();
setTimeout(function() {
console.log(5);
def.resolve();
}, 1000);
return def;
});
$(function() {
// Логирование всех reject-событий:
var original_deferred = $.Deferred;
$.Deferred = function() {
var deferred = original_deferred.apply(this, arguments);
var original_reject = deferred.reject;
deferred.reject = function() {
try { throw Error(); } catch(err) {
var mod_args = $(arguments).toArray();
var str_num = err.stack.split(':').reverse()[1];
mod_args.unshift(str_num + ' строка:');
console.error.apply(this, mod_args);
original_reject.apply(this, arguments);
}
}
return deferred;
}
init(); // Проверка
});
function init() {
var deferred = $.Deferred();
setTimeout(function() {
deferred.reject('Тестовая ошибка!');
}, 1000);
return deferred;
}
new URLSearchParams(location.search).get('size');
localStorage.testovik = 'Здесь данные, которые ты хочешь сохранить...';
infa = localStorage.testovik;
console.log(infa); // Выводим в консоли
var input = document.createElement('input');
input.setAttribute('type', 'file');
input.setAttribute('webkitdirectory', 'true');
input.addEventListener('change', function() {
console.log('Выбраны файлы', input.files);
console.log('Пути файлов относительно выбранной папки:');
for (var n = 0; n < input.files.length; n++) {
console.log(input.files[n].webkitRelativePath);
}
});
input.click();
data:image/png;base64,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
// Получаем список всех ссылок со страницы:
links = document.querySelectorAll('a[href]');
// Перебираем найденные ссылки в цикле:
for (var n = 0; n < links.length; n++) {
// Если ссылка ведет на текущий сайт (внутренняя):
if (new URL(links[n].href)['host'] == location.host) {
// Скачиваем html-код по этой ссылке:
html = await (await fetch(links[n].href)).text();
// Парсим этот html-код:
doc = new DOMParser().parseFromString(html, 'text/html');
// Ищем в спарсеном коде все pdf-ки:
pdfs = doc.querySelectorAll('a[href$=".pdf"]');
// Перебираем найденные pdf-ки в цикле:
for (var i = 0; i < pdfs.length; i++) {
// Выводим ссылку в консоли:
console.log(pdfs[i].href);
}
}
}