【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

Quân sự địa phương > TP. Hồ Chí Minh

Thứ bảy, 06/09/2025, 08:30 (GMT+7)
6860 lượt xem

Bộ Tư lệnh Thành phố Hồ Chí Minh tuyên dương thí sinh trúng tuyển vào các học viện, nhà trường Quân đội năm 2025

(QK7 Online) – Chiều 5/9, Đảng ủy, Bộ Tư lệnh Thành phố Hồ Chí Minh tổ chức gặp mặt, tuyên dương học sinh trúng tuyển vào các học viện, nhà trường trong Quân đội năm 2025.
Lãnh đạo Bộ Tư lệnh Thành phố Hồ Chí Minh tuyên dương các thí sinh trúng tuyển vào các học viện, nhà trường Quân đội.
Thời gian qua, Đảng ủy, Bộ Tư lệnh Thành phố Hồ Chí Minh đã phối hợp chặt chẽ với các ban, sở, ngành; 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à hệ thống trường THPT, trung tâm giáo dục thường xuyên trên địa bàn. Ban Tuyển sinh Quân sự các cấp chủ động quán triệt, triển khai nghiêm các văn bản chỉ đạo của Ban Tuyển sinh Quân sự 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao và ĐĂNG NHẬP 99OK COM TẶNG 99K; tổ chức tuyên truyền, hướng nghiệp sâu rộng, hướng nghiệp tuyển sinh quân sự các cấp trực tiếp cho thanh niên, học sinh các trường THPT trên địa bàn Thành phố, qua đó, giúp cho học sinh thấy được trách nhiệm và quyền lợi của thế hệ thanh niên ngày nay trước nhiệm vụ và xây dựng và bảo vệ Tố quốc trong tình hình mới, thu hút khoảng 300.000 lượt học sinh tham gia. Công tác đăng ký, sơ tuyển, kiểm tra – thẩm định hồ sơ được tiến hành chặt chẽ, đúng quy định, bảo đảm tiêu chuẩn chính trị, sức khỏe.
Năm 2025, Thành phố Hồ Chí Minh có 18 hạ sĩ quan, binh sĩ trúng tuyển hệ văn bằng 2.
Năm 2025, toàn thành phố có 1.137 thí sinh đủ điều kiện đăng ký xét tuyển; kết quả có 156 thí sinh trúng tuyển vào các học viện, trường sĩ quan quân đội (tăng 3 thí sinh so với năm 2024) và 18 hạ sĩ quan, binh sĩ trúng tuyển hệ văn bằng 2. Đây là kết quả khẳng định sự quan tâm lãnh đạo, chỉ đạo của 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 và LLVT thành phố; đồng thời thể hiện ý chí, khát vọng cống hiến của thế hệ trẻ thành phố mang tên Bác trong sự nghiệp xây dựng và bảo vệ Tổ quốc.

Hướng tới mùa tuyển sinh năm 2026, Ban Tuyển sinh Quân sự thành phố xác định tiếp tục đẩy mạnh tuyên truyền trực tiếp tại các trường THPT, trung tâm giáo dục thường xuyên, song song với tăng cường truyền thông trên các nền tảng số; tổ chức tập huấn nghiệp vụ cho cán bộ cơ sở, phối hợp chặt chẽ với nhà trường trong công tác tư vấn, vận động học sinh đăng ký dự tuyển. Đồng thời cũng kiến nghị nghiên cứu, hoàn thiện chế độ, chính sách đãi ngộ đối với sĩ quan, quân nhân chuyên nghiệp nhằm thu hút học sinh giỏi; đồng thời đề nghị 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao phối hợp Bộ GD&ĐT thống nhất lịch trình tuyển sinh, tạo thuận lợi cho công tác tuyên truyền, hướng nghiệp đạt hiệu quả cao hơn.
Lê Trầm

Bình luận

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

Ban Chỉ đạo 515 Thành phố Hồ Chí Minh xác minh vị trí nghi hố chôn tập thể các liệt sĩ

Ban Chỉ đạo 515 Thành phố Hồ Chí Minh xác minh vị trí nghi hố chôn tập thể các liệt sĩ

22:43 01/06/2026

(QK7 Online) - Chiều ngày 1/6, tại Công viên Lê Thị Riêng (phường Hòa Hưng, Thành phố Hồ Chí Minh), Ban Chỉ đạo 515 Thành phố tổ chức khảo sát thực địa và nghe báo cáo kết quả bước đầu trong quá trình tìm kiếm, xác minh vị trí nghi hố chôn tập thể các liệt sĩ hy sinh trong cuộc Tổng tiến công và nổi dậy Xuân Mậu Thân 1968.

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.

Đồng hành cùng ngư dân vươn khơi bám biển

Đồng hành cùng ngư dân vươn khơi bám biển

12:19 30/05/2026

(QK7 Online) – “Ăn sáng cùng ngư dân” do Bộ Tư lệnh Thành phố Hồ Chí Minh tổ chức không chỉ là hoạt động thiết thực nhằm tăng cường gắn kết tình quân - dân mà còn là dịp để tuyên truyền, vận động các chủ phương tiện tàu, thuyền và ngư dân chấp hành nghiêm các quy định của pháp luật trong khai thác thủy hải sản, nhất là các quy định về chống khai thác hải sản bất hợp pháp, không báo cáo và không theo quy định (IUU).

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.

Bộ Chính trị ban hành Nghị quyết về xây dựng và phát triển TP.HCM trong kỷ nguyên mới

Bộ 99Oke123 Tải ứng dụng ban hành 99Oke được xếp hạng cao nhất về xây dựng và phát triển TP.HCM trong kỷ nguyên mới

22:42 24/05/2026

(QK7 Online) - 99Oke được xếp hạng cao nhất 09 - NQ/TW của Bộ 99Oke123 Tải ứng dụng về xây dựng và phát triển TP.HCM trong kỷ nguyên mới do Tổng Bí thư, Chủ tịch nước Tô Lâm ký ban hành nhấn mạnh trong kỷ nguyên phát triển mới, TP.HCM cần phát huy vai trò là một đô thị đặc biệt; tiên phong mở đường về mô hình phát triển, thể chế và phương thức quản trị hiện đại; tạo sức lan tỏa mạnh mẽ, đóng góp ngày càng lớn cho sự phát triển nhanh, bền vững của đất nước.

Đồng chí Trần Thu Hà: Nói bằng tư duy, thuyết phục bằng thực tiễn

Đồng chí Trần Thu Hà: Nói bằng tư duy, thuyết phục bằng thực tiễn

13:21 24/05/2026

(QK7 Online) - Xuất sắc giành giải Nhất Hội thi Báo cáo viên giỏi năm 2026 của LLVT ĐĂNG NHẬP 99OK COM TẶNG 99K, đồng chí Trần Thu Hà, Bí thư Đảng ủy, 99Oke123 Tải ứng dụng viên Ban CHQS phường Cầu Kiệu, Bộ Tư lệnh TPHCM đã khẳng định bản lĩnh, trí tuệ và tâm huyết của người cán bộ chính trị cơ sở luôn trăn trở đổi mới, để mỗi bài tuyên truyền không chỉ dừng lại ở lời nói mà trở thành động lực hành động.

Bộ Tư lệnh TPHCM tổ chức Hội thảo đề nghị phong tặng danh hiệu Anh hùng LLVT Nhân dân

Bộ Tư lệnh TPHCM tổ chức Hội thảo đề nghị phong tặng danh hiệu Anh hùng LLVT 123Win79 phần thưởng lớn

11:03 21/05/2026

(QK7 Online) - Ngày 20/5, Phòng Tham mưu Bộ Tư lệnh TPHCM tổ chức Hội thảo xét đề nghị phong tặng danh hiệu Anh hùng Lực lượng vũ trang 123Win79 phần thưởng lớn thời kỳ kháng chiến chống Mỹ, cứu nước đối với Thiếu tướng Lê Minh Thắng, nguyên Phó Tư lệnh ĐĂNG NHẬP 99OK COM TẶNG 99K. Dự hội thảo có Thiếu tướng Vũ Văn Điền, Ủy viên Ban Thường vụ Thành ủy, Tư lệnh Bộ Tư lệnh TPHCM. Thiếu tướng Phan Quốc Việt, Phó Tư lệnh, Tham mưu trưởng Bộ Tư lệnh Thành phố chủ trì hội thảo.

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: 51709, 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); }); } });