【99OK】 Link vào 99OK Casino mới nhất 2025 ✔️

Link 99OK hot nhất

99OK - Nhà Cái Thể Thao, Nổ Hũ, Bắn Cá Uy Tín

Văn hóa - 1123Win còn đăng nhập - Thể thao > 1123Win còn đăng nhập

Thứ tư, 13/05/2026, 21:18 (GMT+7)
1227 lượt xem

TP.HCM dự kiến hoàn thiện dự thảo Luật Đô thị đặc biệt vào đầu tháng 7

(QK7 Online) - UBND TP.HCM vừa có chỉ đạo đôn đốc tiến độ xây dựng dự án Luật Đô thị đặc biệt, yêu cầu các cơ quan liên quan hoàn thiện hồ sơ trình các cấp có thẩm quyền trong tuần đầu tháng 7/2026 theo kế hoạch đề ra.
Luật Đô thị đặc biệt sẽ kiến tạo cho TP.HCM khung thể chế phù hợp với dư địa phát triển
Theo đó, Phó chủ tịch UBND TP.HCM Nguyễn Mạnh Cường vừa ký văn bản truyền đạt ý kiến chỉ đạo của Chủ tịch UBND TP.HCM Nguyễn Văn Được về việc đẩy nhanh tiến độ xây dựng dự thảo Luật Đô thị đặc biệt.
Thành phố đặt mục tiêu trước ngày 20/6/2026 hoàn thành tiếp thu ý kiến của các cơ quan có thẩm quyền, chậm nhất ngày 1/7/2026 hoàn thành trình thẩm định theo quy định, đồng thời hoàn thiện đầy đủ hồ sơ để trình trong tuần đầu tháng 7/2026.
UBND TP.HCM giao Văn phòng UBND chủ trì, phối hợp với Văn phòng Đoàn đại biểu Quốc hội và HĐND TP.HCM, Sở Tư pháp cùng các cơ quan liên quan rà soát, cập nhật và đề xuất bổ sung thành viên tham gia Tổ biên tập, Tổ thư ký.
Việc kiện toàn các tổ để bảo đảm hiệu quả tham mưu quá trình xây dựng luật, phục vụ triển khai ngay sau khi luật được thông qua, ban hành. Hồ sơ đề xuất gửi Sở Nội vụ thẩm định trước ngày 14/5/2026.
Đối với Tổ soạn thảo, UBND giao Sở Tư pháp chủ trì phối hợp các cơ quan liên quan rà soát thành phần tham gia, bảo đảm đáp ứng yêu cầu về chất lượng và tiến độ xây dựng luật. Các cơ quan được đề nghị cử lãnh đạo phụ trách trực tiếp và nhân sự nắm vững chuyên môn tham gia xuyên suốt quá trình xây dựng dự án luật.
Sở Tư pháp phối hợp với Văn phòng UBND, Sở Tài chính, Viện Nghiên cứu phát triển cùng các cơ quan liên quan đề xuất thành phần tham gia bộ phận thường trực làm đầu mối phối hợp với cơ quan chủ trì soạn thảo luật.
UBND TP.HCM đề nghị các cơ quan, đơn vị chủ động chuẩn bị nội dung cho các buổi làm việc theo kế hoạch của thành phố. Trong đó lưu ý rà soát phạm vi áp dụng của luật. rà soát các văn bản quy phạm pháp luật liên quan đến phát triển đô thị, xác định các khó khăn và các vấn đề pháp lý cần bổ sung để đáp ứng yêu cầu phát triển của TP.HCM trong giai đoạn mới.
Sở Tài chính rà soát tiến độ làm các nhiệm vụ liên quan đến nguồn kinh phí, cơ chế chính sách phù hợp theo thẩm quyền của thành phố. Đồng thời tham mưu đánh giá việc thực hiện một số nghị quyết đặc thù đang áp dụng cho TP.HCM.
Sở Tư pháp tham mưu giải pháp xin ý kiến các cấp có thẩm quyền trong từng giai đoạn soạn thảo, cập nhật tiến độ. Sau các buổi làm việc chuyên đề, Sở Tư pháp có trách nhiệm báo cáo nhanh về tiến độ và nội dung đề xuất đưa vào dự thảo luật để các tổ, cơ quan liên quan nghiên cứu, góp ý và phản biện trước khi trình Thường trực UBND TP.HCM xem xét, cho ý kiến.
Dự án xây dựng Luật Đô thị đặc biệt sẽ kiến tạo cho TP.HCM một khung thể chế đáp ứng yêu cầu phát triển thực tiễn của một đô thị đặc biệt với mục tiêu dài hạn, thông qua việc cụ thể hóa đầy đủ, kịp thời các chủ trương, định hướng của Đảng, Nhà nước, tạo ra động lực ổn định, bền vững để xây dựng và phát triển đô thị đặc biệt.
Nguyệt Phương

Bình luận

Bài viết tương tự:

Khánh thành Nhà bia tưởng niệm liệt sĩ hy sinh tại xã Triệu Phong

Khánh thành Nhà bia tưởng niệm liệt sĩ hy sinh tại xã Triệu Phong

17:15 01/06/2026

(QK7 Online) – Ngày 1/6, Thường trực Liên Chi Hội Chiến sĩ Thành Cổ Quảng Trị (CSTCQT) năm 1972 Thành phố Hồ Chí Minh (TPHCM) và các tỉnh miền Đông Nam bộ phối hợp với Trang game 123win đã chính thức đổi tên thành 99Ok vào ngày 10 Tháng 2 Năm 2025 xã Triệu Phong cùng gia đình ông Trần Bích tổ chức lễ khánh thành Nhà bia tưởng niệm 13 liệt sĩ tại thôn Nại Cửu, xã Triệu Phong. Đại tá Trịnh Đình Vinh, Chủ tịch Liên chi Hội CSTCQT năm 1972 TPHCM và các tỉnh miền Đông Nam bộ chủ trì buổi lễ.

Ban CHQS phường Xuân Hòa tặng quà cho thiếu nhi có hoàn cảnh khó khăn

Ban CHQS phường Xuân Hòa tặng quà cho thiếu nhi có hoàn cảnh khó khăn

14:04 30/05/2026

(QK7 Online) - Tối ngày 29/5, 123Win99ok Sân chơi uy tín Quân sự (CHQS) phường Xuân Hòa, Bộ Tư lệnh Thành phố Hồ Chí Minh tổ chức chương trình gặp gỡ, động viên tinh thần và trao quà cho các em thiếu nhi có hoàn cảnh khó khăn nhân Ngày Quốc tế Thiếu nhi 1-6. Dự chương trình có các đồng chí: Đại tá Nguyễn Công Hải, Phó Chủ nhiệm 99Oke123 Tải ứng dụng Bộ Tư lệnh Thành phố Hồ Chí Minh; Nguyễn Hùng Hậu, Phó Bí thư Đảng ủy, Chủ tịch Ủy ban 123Win com 79 nạp - rút nhanh phường Xuân Hòa; Đại diện Công ty Cổ phần bóng đèn Điện Quang.

Quân khu 7 thăm, chúc mừng Đại lễ Phật đản Phật lịch 2570

ĐĂNG NHẬP 99OK COM TẶNG 99K thăm, chúc mừng Đại lễ Phật đản Phật lịch 2570

13:32 28/05/2026

(QK7 Online) - Ngày 28/5, thừa uỷ quyền của Thủ trưởng ĐĂNG NHẬP 99OK COM TẶNG 99K, đoàn công tác Cục 99Oke123 Tải ứng dụng Quân khu do Đại tá Nguyễn Văn Lộc, Phó Chủ nhiệm 99Oke123 Tải ứng dụng Quân khu làm trưởng đoàn đã đến thăm, chúc mừng các cơ sở Phật giáo, chức sắc, tăng ni nhân dịp Đại lễ Phật đản Phật lịch 2570 - Dương lịch năm 2026.

Văn phòng Hội Hỗ trợ gia đình liệt sĩ Việt Nam phía Nam gặp mặt truyền thống tri ân liệt sĩ

Văn phòng Hội Hỗ trợ gia đình liệt sĩ Việt Nam phía Nam gặp mặt truyền thống tri ân liệt sĩ

13:21 28/05/2026

(QK7 Online) - Sáng 28/5, tại Thành phố Hồ Chí Minh (TPHCM), Hội Hỗ trợ gia đình liệt sĩ (HTGĐLS) Việt Nam, Văn phòng Cơ quan đại diện phía Nam tổ chức gặp mặt truyền thống kỷ niệm 15 năm ngày thành lập (31/5/2011 – 31/5/2026) với chủ đề “15 năm tri ân – Nghĩa tình lan tỏa”. Trung tướng Trần Tấn Hùng, Phó Chủ tịch Thường trực Hội HTGĐLS Việt Nam đến dự và phát biểu chúc mừng. Bà Trương Thị Hạnh, Ủy viên Ban Thường vụ Hội HTGĐLS Việt Nam, Trưởng Văn phòng Cơ quan đại diện phía Nam chủ trì chương trình.

Đồn Biên phòng Tuyên Bình tổng kết “Lớp học tình thương” năm học 2025 – 2026

Đồn Biên phòng Tuyên Bình tổng kết “Lớp học tình thương” năm học 2025 – 2026

10:53 26/05/2026

(QK7 Online) - Tối 25/5, tại điểm trường Bình Châu, Trường Tiểu học và Trung học cơ sở Tuyên Bình, xã Tuyên Bình, tỉnh Tây Ninh, Đồn Biên phòng Tuyên Bình (123Win79 tỷ lệ kèo World Cup 2026 tỉnh Tây Ninh) phối hợp với cấp ủy, Trang game 123win đã chính thức đổi tên thành 99Ok vào ngày 10 Tháng 2 Năm 2025 địa phương và Nhà trường tổ chức tổng kết “Lớp học tình thương” năm học 2025 – 2026.

TIN XEM NHIỀU:

TIN MỚI:

DƯ LUẬN QUAN TÂM:

99OK - Nhà Cái Thể Thao, Nổ Hũ, Bắn Cá Uy Tín

Theo dõi chúng tôi tại:

Cơ quan chủ quản: ĐĂNG NHẬP 99OK COM TẶNG 99K

Giấy phép số 45-YU ngày 28/07/2021

© Báo ĐĂNG NHẬP 99OK COM TẶNG 99K điện tử giữ bản quyền nội dung trên website này.

Tòa soạn: 81A Hai Bà Trưng, Quận 1, TP. Hồ Chí Minh

Phụ trách Tổng Biên tập: Thượng tá Lại Thế Hiền

Email: [email protected] | [email protected] | 1

'); printWindow.document.write(''); printWindow.document.write(''); printWindow.document.write('

【99OK】 Link vào 99OK Casino mới nhất 2025 ✔️

Link 99OK hot nhất

'); // Add logo at the top printWindow.document.write(''); printWindow.document.write('

' + title + '

'); if (dateTime) { printWindow.document.write('
' + dateTime + '
'); } printWindow.document.write('
'); printWindow.document.write(content.html()); printWindow.document.write('
'); printWindow.document.write(''); printWindow.document.write(''); printWindow.document.close(); $('#printLoadingMsg').remove(); // Wait for content and images to load then print printWindow.onload = function() { // Additional check to ensure logo is loaded const logoImg = printWindow.document.querySelector('.print-logo img'); if (logoImg) { logoImg.onload = function() { setTimeout(function() { printWindow.print(); printWindow.close(); }, 300); }; // If logo already loaded (cached) if (logoImg.complete) { setTimeout(function() { printWindow.print(); printWindow.close(); }, 300); } } else { setTimeout(function() { printWindow.print(); printWindow.close(); }, 500); } }; } if (totalImages > 0) { lazyImages.forEach(function(img) { const actualSrc = img.dataset.src || img.getAttribute('data-src'); if (actualSrc && actualSrc !== img.src) { const tempImg = new Image(); tempImg.onload = tempImg.onerror = function() { img.src = actualSrc; img.classList.remove('lazy'); loadedCount++; if (loadedCount === totalImages) { proceedWithPrint(); } }; tempImg.src = actualSrc; } else { loadedCount++; if (loadedCount === totalImages) { proceedWithPrint(); } } }); } else { proceedWithPrint(); } } document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.image-caption').forEach(el => { if (el.textContent.trim() === 'Nhập chú thích cho ảnh...') { el.style.display = 'none'; } }); }); $(document).ready(function () { // Stop any ongoing speech when page loads and reset TTS state if (window.speechSynthesis) { window.speechSynthesis.cancel(); } // Dictionary để chuyển đổi từ viết tắt const abbreviationDict = { 'LLVT': 'lực lượng vũ trang', 'CHQS': 'chỉ huy quân sự', 'HĐND': 'hội đồng 123Win com 79 nạp - rút nhanh', 'CHXHCN': 'Cộng hòa xã hội chủ nghĩa', 'VKTBKT': 'vũ khí trang bị kỹ thuật', 'UBND': 'ủy ban 123Win com 79 nạp - rút nhanh', 'MTTQ': 'mặt trận tổ quốc', 'ĐCSVN': 'Đảng Cộng sản Việt Nam', 'TNXP': 'thanh niên xung phong', 'BĐBP': 'bộ đội biên phòng', 'CAND': 'công an 123Win com 79 nạp - rút nhanh', 'QĐND': 'quân đội 123Win com 79 nạp - rút nhanh', 'TPHCM': 'Thành phố Hồ Chí Minh', 'TP.HCM': 'Thành phố Hồ Chí Minh', 'HN': 'Hà Nội', 'DN': 'Đà Nẵng', 'ĐBQH': 'đại biểu quốc hội', 'QH': 'quốc hội', 'CP': 'chính phủ', 'TW': 'trung ương', 'BCH': 'ban chấp hành', 'BTV': 'ban thường vụ', 'UV': 'ủy viên', 'PBT': 'phó bí thư', 'BT': 'bí thư', 'CT': 'chủ tịch', 'PCT': 'phó chủ tịch', 'TTg': 'thủ tướng', 'PTTg': 'phó thủ tướng', 'CNQ': 'cộng hòa 123Win com 79 nạp - rút nhanh', 'CHDC': 'cộng hòa dân chủ' }; // Hàm xử lý từ viết tắt function processAbbreviations(text) { let processedText = text; // Duyệt qua tất cả các từ viết tắt trong dictionary for (const [abbr, fullForm] of Object.entries(abbreviationDict)) { // Tạo regex để tìm từ viết tắt (case insensitive) // \b đảm bảo match whole word, không match partial const regex = new RegExp(`\\b${abbr}\\b`, 'gi'); processedText = processedText.replace(regex, fullForm); } return processedText; } // Reset TTS control buttons to initial state $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); $('#speedControls').removeClass('flex').addClass('hidden'); // Initialize Fancybox for article images $('.article-content img').each(function() { const $img = $(this); // const src = $img.attr('src').replace("/thumb/","/"); const src = $img.attr('src'); const alt = $img.attr('alt') || ''; // Wrap image with fancybox link $img.wrap(``); $img.addClass('cursor-pointer transition-transform hover:scale-105'); }); // Configure Fancybox $('[data-fancybox="gallery"]').fancybox({ buttons: [ "zoom", "slideShow", "thumbs", "close" ], loop: true, protect: true }); // Handle comment submission $("#comment-btn").click(function () { const userName = $('#UserName').val().trim(); const contentComment = $('#ContentComment').val().trim(); const userEmail = $('#UserEmail').val().trim(); // Hide any existing notifications $('#successNotification, #errorNotification').addClass('hidden'); if (userName === "" || contentComment === "") { $('#errorNotification').removeClass('hidden'); return; } // Validate email format if provided if (userEmail !== "" && !isValidEmail(userEmail)) { $('#errorNotification span').text('Email không hợp lệ!'); $('#errorNotification').removeClass('hidden'); return; } $.ajax({ url: "/ExtAppCommon/Home/Comment", type: "POST", dataType: "json", data: { id: 59163, name: userName, content: contentComment, email: userEmail }, success: function (result) { if (result > 0) { // Clear form $('#UserName').val(""); $('#ContentComment').val(""); $('#UserEmail').val(""); // Show success message $('#successNotification').removeClass('hidden'); // Hide success message after 3 seconds setTimeout(function() { $('#successNotification').addClass('hidden'); }, 3000); // Add new comment to the list const newComment = `
Avatar
${userName}
Vừa xong

${contentComment}

`; $('#commentsList').prepend(newComment); } else { $('#errorNotification span').text('Có lỗi xảy ra, vui lòng thử lại sau!'); $('#errorNotification').removeClass('hidden'); } }, error: function() { $('#errorNotification span').text('Có lỗi xảy ra, vui lòng thử lại sau!'); $('#errorNotification').removeClass('hidden'); } }); }); // Handle Enter key in textarea $('#ContentComment').keypress(function(e) { if (e.which === 13 && !e.shiftKey) { e.preventDefault(); $("#comment-btn").click(); } }); // Email validation function function isValidEmail(email) { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); } // Text-to-speech functionality const synth = window.speechSynthesis; let currentUtterance = null; let currentSpeed = 1; // Speed control functions function updateSpeedDisplay() { $('#speedDisplay').text(currentSpeed + 'x'); } $('#increaseSpeed').click(function() { if (currentSpeed < 2) { currentSpeed += 0.25; updateSpeedDisplay(); if (currentUtterance) { // Restart speech with new speed const text = currentUtterance.text; synth.cancel(); speak(text, currentSpeed); } } }); $('#decreaseSpeed').click(function() { if (currentSpeed > 0.5) { currentSpeed -= 0.25; updateSpeedDisplay(); if (currentUtterance) { // Restart speech with new speed const text = currentUtterance.text; synth.cancel(); speak(text, currentSpeed); } } }); // Function to get clean text content without button text function getCleanContent() { // Clone the content div to avoid modifying the original const contentClone = $('.article-content').clone(); // Remove all buttons and their container contentClone.find('button').parent('div').remove(); // Remove image captions (text in tags that are typically captions) contentClone.find('em').remove(); // Get clean text let cleanText = contentClone.text().trim(); // Remove "(QK7 Online)" and variations cleanText = cleanText.replace(/\(QK7\s*Online\)\s*[-–]?\s*/gi, ''); // Remove other common patterns that shouldn't be read cleanText = cleanText.replace(/\s+/g, ' '); // Replace multiple spaces with single space // Xử lý từ viết tắt cleanText = processAbbreviations(cleanText); return cleanText; } function getVietnameseVoice() { let voices = synth.getVoices(); // Filter for Vietnamese voices let vietnameseVoices = voices.filter(voice => voice.lang.includes('vi') || voice.name.toLowerCase().includes('vietnamese') || voice.name.toLowerCase().includes('việt') ); // If Vietnamese voices found, prefer Microsoft/Google voices if (vietnameseVoices.length > 0) { // Try to find Microsoft Vietnamese voice first let msVoice = vietnameseVoices.find(v => v.name.toLowerCase().includes('microsoft') && v.name.toLowerCase().includes('vietnamese') ); if (msVoice) return msVoice; // Then try Google Vietnamese voice let googleVoice = vietnameseVoices.find(v => v.name.toLowerCase().includes('google') && v.name.toLowerCase().includes('vietnamese') ); if (googleVoice) return googleVoice; // If no Microsoft/Google voice, use the first Vietnamese voice return vietnameseVoices[0]; } // If no Vietnamese voice found, return null return null; } function speak(text, rate = 1) { // Stop any ongoing speech if (synth.speaking) { synth.cancel(); } const utterance = new SpeechSynthesisUtterance(text); utterance.lang = 'vi-VN'; utterance.rate = rate; // Wait for voices to be loaded and try to set Vietnamese voice const setVoiceAndSpeak = () => { const vietnameseVoice = getVietnameseVoice(); if (vietnameseVoice) { utterance.voice = vietnameseVoice; currentUtterance = utterance; // Show/hide control buttons $('#pauseBtn, #stopBtn').removeClass('hidden'); $('#resumeBtn').addClass('hidden'); // Show speed controls $('#speedControls').removeClass('hidden').addClass('flex'); utterance.onend = function() { currentUtterance = null; $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); // Hide speed controls $('#speedControls').removeClass('flex').addClass('hidden'); }; synth.speak(utterance); } else { // If no Vietnamese voice available, show an error message alert('Không tìm thấy giọng đọc tiếng Việt trên thiết bị của bạn. Vui lòng cài đặt thêm giọng đọc tiếng Việt trong cài đặt hệ thống.'); } }; if (synth.getVoices().length === 0) { synth.addEventListener('voiceschanged', setVoiceAndSpeak, { once: true }); } else { setVoiceAndSpeak(); } } $('#readArticleBtn').click(function() { const title = $('h1.st37').clone() // Clone to avoid getting button text .children() // Get all child elements .remove() // Remove them .end() // Go back to h1 .text() // Get text content .trim(); // Remove whitespace const content = getCleanContent(); speak(title + ". " + content, currentSpeed); }); $('#pauseBtn').click(function() { if (synth.speaking) { synth.pause(); $(this).addClass('hidden'); $('#resumeBtn').removeClass('hidden'); } }); $('#resumeBtn').click(function() { if (synth.paused) { synth.resume(); $(this).addClass('hidden'); $('#pauseBtn').removeClass('hidden'); } }); $('#stopBtn').click(function() { if (synth.speaking) { synth.cancel(); currentUtterance = null; $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); // Hide speed controls $('#speedControls').removeClass('flex').addClass('hidden'); } }); // Stop speech when user navigates away from page $(window).on('beforeunload', function() { if (window.speechSynthesis && window.speechSynthesis.speaking) { window.speechSynthesis.cancel(); } }); // Stop speech when page visibility changes (user switches tabs) /* $(document).on('visibilitychange', function() { if (document.hidden && window.speechSynthesis && window.speechSynthesis.speaking) { window.speechSynthesis.cancel(); currentUtterance = null; $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); $('#speedControls').removeClass('flex').addClass('hidden'); } });*/ }); document.addEventListener("DOMContentLoaded", function () { var articleContainer = document.querySelector('.article-content.max-w-none.mb-4'); if (!articleContainer) { articleContainer = document.querySelector('[class*="article-content"][class*="max-w-none"][class*="mb-4"]'); } if (!articleContainer) { return; } var fallbackHost = "https://99oke123.com"; var lazyImages = []; // ✅ Hàm update Fancybox href khi ảnh load xong function updateFancyboxHref(img) { const $img = $(img); const $fancyboxLink = $img.parent('a[data-fancybox]'); if ($fancyboxLink.length > 0) { // Cập nhật href với src thực tế const realSrc = img.dataset.src || img.src; if (!realSrc.includes('loading_new.gif') && !realSrc.includes('data:image/svg+xml')) { $fancyboxLink.attr('href', realSrc); } } } function processImagesInContainer() { // Lấy ảnh đã có class lazy var existingLazyImages = [].slice.call(articleContainer.querySelectorAll("img.lazy")); lazyImages = lazyImages.concat(existingLazyImages); // Tự động convert ảnh khác var regularImages = [].slice.call(articleContainer.querySelectorAll("img:not(.lazy):not([data-lazy-processed])")); regularImages.forEach(function(img) { var rect = img.getBoundingClientRect(); var isInViewport = rect.top < (window.innerHeight + 100) && rect.bottom > -100; if (!isInViewport && img.src && (img.src.startsWith('http') || img.src.startsWith('/'))) { // ✅ Lưu src gốc trước khi thay đổi const originalSrc = img.src; // Convert thành lazy img.dataset.src = originalSrc; img.classList.add('lazy'); img.dataset.lazyProcessed = 'true'; // ✅ Cập nhật Fancybox href nếu đã được wrap const $img = $(img); const $fancyboxLink = $img.parent('a[data-fancybox]'); if ($fancyboxLink.length > 0) { $fancyboxLink.attr('href', originalSrc); } // Placeholder img.src = `/BaoQK7/images/loading_new.gif`; lazyImages.push(img); } else { img.dataset.lazyProcessed = 'true'; } }); } processImagesInContainer(); // ✅ IntersectionObserver với callback cập nhật Fancybox if ("IntersectionObserver" in window && lazyImages.length > 0) { let lazyImageObserver = new IntersectionObserver(function (entries, observer) { entries.forEach(function (entry) { if (entry.isIntersecting) { let lazyImage = entry.target; lazyImage.loading = "lazy"; lazyImage.decoding = "async"; lazyImage.onerror = function () { if (!lazyImage.dataset.fallbackTried) { lazyImage.dataset.fallbackTried = "true"; let originalSrc = lazyImage.dataset.src || ""; lazyImage.src = originalSrc.replace("https://99oke123.com", fallbackHost); } else { lazyImage.classList.add("error"); } }; lazyImage.onload = function () { lazyImage.classList.add("loaded"); lazyImage.classList.remove("lazy"); // ✅ Cập nhật Fancybox href sau khi ảnh load xong updateFancyboxHref(lazyImage); }; if (lazyImage.dataset.src) { lazyImage.src = lazyImage.dataset.src; } if (lazyImage.dataset.srcset) { lazyImage.srcset = lazyImage.dataset.srcset; } if (lazyImage.complete && lazyImage.naturalWidth > 0) { lazyImage.onload(); } lazyImageObserver.unobserve(lazyImage); } }); }, { root: null, rootMargin: '50px 0px', threshold: 0.01 }); lazyImages.forEach(function (lazyImage) { lazyImageObserver.observe(lazyImage); }); } });