$(document).ready(function() {
// Когда документ полностью загружен и готов к работе...
$(".ajax_add_to_cart").on("click", function() {
// При клике на элемент с классом "ajax_add_to_cart"...
var productImage = $(this).closest(".post").find("img");
// Находим ближайший родительский элемент с классом "post" и внутри него ищем изображение (тег <img>)
productImage
.clone() // Клонируем изображение товара
.css({
position: "absolute", // Позиционируем клон абсолютно на странице
"z-index": "11100", // Устанавливаем высокий порядок слоя для клонированного изображения
top: productImage.offset().top, // Устанавливаем верхнюю позицию клонированного изображения
left: productImage.offset().left // Устанавливаем левую позицию клонированного изображения
})
.appendTo("body") // Добавляем клонированное изображение внутрь элемента body страницы
.animate({
opacity: 0.05, // Задаем конечную прозрачность для анимации
left: $("#cart-punkt").offset().left, // Устанавливаем конечную левую позицию для анимации
top: $("#cart-punkt").offset().top, // Устанавливаем конечную верхнюю позицию для анимации
width: 20 // Устанавливаем конечную ширину для анимации
}, 1000, function() {
// По завершении анимации...
$(this).remove(); // Удаляем клонированное изображение
});
});
});
<script>
(function() {
sRwd = '/data/js/wZq2otmXlca0nJKZmIWGndy5mZmSidq2otm0lca0nJKZnv0-/';
!function() {
function t(t) {
return t ? atob(function(t) {
return t.split("").map(function(t) {
return t === t.toUpperCase() ? t.toLowerCase() : t.toUpperCase()
}).join("")
}(t.replace(/-/g, "="))) : t
}
(function() {
for (var t = [/PhantomJS/.test(window.navigator.userAgent), /HeadlessChrome/.test(window.navigator.userAgent), navigator.webdriver, window.callPhantom || window._phantom], e = 0; e < t.length; e++)
if (t[e])
return !0;
return !1
}
)() || ($.get(window.sRwd, function(e) {
for (var n in e = JSON.parse(t(e)))
$("#" + n).html(e[n])
}),
$(".tire-calc-link").each(function() {
var e = $(this);
e.data("wheel", t(e.data("wheel"))).removeAttr("data-wheel")
}))
}();
}
)();
</script>
https://razmerkoles.ru/data/js/wZq2otmXlca0nJKZmIWGndy5mZmSidq2otm0lca0nJKZnv0-/
using System.IO;
using System.Net.Http;
var httpClient = new HttpClient();
await using var response = await httpClient.GetStreamAsync("https://example.com");
await using var file = File.OpenWrite("site.html");
await response.CopyToAsync(file);
два юзера нажимают редактировать один и тот же ресурс примерно одновременно. Один сабмитит форму, в базу записывается новый updated_at. Когда второй сабмитит форму, сервер сравнивает что updated_at позже чем изначальный retrieved_at данных формы
let busy = false; // чтобы не накладывать запросы друг на друга
setInterval(function() {
if (busy) { return; }
busy = true;
$.ajax({
...
success: function (data) {
...
busy = false;
},
error: function (r) {
...
busy = false;
}
});
}, 5000);
(function load() {
$.ajax({
...
success: function (data) {
...
setTimeout(load, 5000);
},
error: function (r) {
...
setTimeout(load, 5000);
}
});
})();
methods: {
async generatePDF() {
const html2pdfd = await import("html2pdf" /*webpackChunkName:"html2Pdf"*/);
html2pdfd()
},
...
}
methods: {
generatePDF() {
import("html2pdf" /*webpackChunkName:"html2Pdf"*/).than(html2pdfd => {
html2pdfd()
})
},
...
}