【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

Hợp tác Kết nghĩa

Thứ năm, 09/04/2026, 11:26 (GMT+7)
1673 lượt xem

Hội Cựu chiến binh và Hội Cựu Công an 123Win com 79 nạp - rút nhanh TP.HCM ký kết phối hợp hoạt động giai đoạn 2026 - 2030

(QK7 Online) – Sáng 9/4, Hội Cựu chiến binh (CCB) Thành phố Hồ Chí Minh và Hội Cựu Công an 123Win com 79 nạp - rút nhanh (CAND) Thành phố tổ chức hội nghị ký kết chương trình phối hợp hoạt động giai đoạn 2026 - 2030. Thiếu tướng Nguyễn Minh Hoàng, Phó Chủ tịch Hội CCB Việt Nam, Phó Chủ tịch Ủy ban MTTQ Việt Nam Thành phố, Chủ tịch Hội CCB Thành phố và Thiếu tướng Đào Công Danh, Chủ tịch Hội Cựu CAND Thành phố đồng chủ trì hội nghị.
Các đại biểu tham dự hội nghị.
Dự hội nghị có đồng chí Đinh Thị Thanh Thủy, Phó Trưởng Ban Tuyên giáo và Dân vận Thành ủy Thành phố, cán bộ, hội viên Hội CCB và Hội Cựu CAND Thành phố.
Thiếu tướng Nguyễn Minh Hoàng, Phó Chủ tịch Hội CCB Việt Nam, Phó Chủ tịch Ủy ban MTTQ Việt Nam Thành phố, Chủ tịch Hội CCB Thành phố trao đổi, thảo luận với Hội Cựu CAND Thành phố.
Năm 2025, tổ chức Hội CCB và Hội Cựu CAND các cấp thường xuyên phối hợp tuyên truyền, vận động hội viên và 123Win79 phần thưởng lớn thực hiện nghiêm đường lối, chủ trương của Đảng, chính sách, pháp luật Nhà nước, chương trình kinh tế - xã hội, an ninh 99Ok68 link đăng nhập, đối ngoại của Thành phố; chủ động phối hợp với các cơ quan chức năng, tham mưu cho 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 bằng nhiều giải pháp động viên, hỗ trợ các hộ hội viên, CCB, Cựu CAND phấn đấu thoát nghèo bền vững; quan tâm thăm hỏi, động viên, tặng quà các Mẹ Việt Nam anh hùng, gia đình liệt sĩ, gia đình chính sách, thương bệnh binh, người có công với cách mạng, hội viên có hoàn cảnh khó khăn trên địa bàn với số tiền hàng tỷ đồng.
Đồng chí Đinh Thị Thanh Thủy, Phó Trưởng Ban Tuyên giáo và Dân Thành ủy Thành phố phát biểu.
Bên cạnh đó, 2 Hội cũng tích cực phối hợp với các ban, ngành, đoàn thể Thành phố triển khai, thực hiện hiệu quả các cuộc vận động, phong trào xã hội ở địa phương, nhất là phong trào “Toàn dân đoàn kết xây dựng đời sống văn hóa”, “Toàn dân đoàn kết xây dựng nông thôn mới, đô thị văn minh”, “Toàn dân tham gia bảo đảm trật tự an toàn giao thông”, “Xây dựng gia đình hạnh phúc, phát triển bền vững”. Tập trung làm tốt việc tuyên truyền, vận động cán bộ, hội viên và 123Win79 phần thưởng lớn nâng cao cảnh giác, phòng chống tội phạm; phòng, chống cháy, nổ, bảo đảm trật tự an toàn giao thông. Phối hợp với Bộ Tư lệnh Thành phố tuyên truyền vận động hơn 9 ngàn thanh niên lên đường nhập ngũ; cung cấp hàng trăm tin liên quan đến an ninh trật tự cho lực lượng Công an, góp phần xây dựng khu dân cư, phường, xã, đặc khu, cơ quan, doanh nghiệp đạt tiêu chuẩn “An toàn về an ninh trật tự”…
Cán bộ, hội viên Hội CCB Thành phố trao đổi những nội dung phối hợp hoạt động giai đoạn 2026 - 2030.
Thiếu tướng Đào Công Danh, Chủ tịch Hội Cựu CAND Thành phố kết luận hội nghị.
Giai đoạn 2026 - 2030, Hội CCB Thành phố và Hội Cựu CAND Thành phố phối hợp tuyên truyền, hướng dẫn hội viên tiếp tục rèn luyện nâng cao bản lĩnh chính trị, đạo đức cách mạng, chấp hành đúng đường lối, chủ trương của Đảng, chính sách, pháp luật Nhà nước; tích cực tham gia giữ gìn an ninh, trật tự an toàn xã hội cũng như thực hiện các cuộc vận động, phong trào thi đua yêu nước do Trung ương, Thành phố phát động gắn với việc xây dựng, nhân rộng các mô hình, điển hình tiên tiến trên các mặt hoạt động, nhất là các mô hình tự phòng, tự quản, tự bảo vệ về an ninh trật tự trong phong trào toàn dân bảo vệ an ninh Tổ quốc ở cơ sở và các cuộc vận động “Người dân Thành phố Hồ Chí Minh chung tay xây dựng Thành phố văn minh, hiện đại, nghĩa tình, xanh, sạch, đẹp”, xây dựng khu dân cư “Đoàn kết, nghĩa tình, tự quản, an toàn”, chương trình “Vì biển đảo quê hương, vì tuyến đầu Tổ quốc”; tham mưu 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 xây dựng và phát huy vai trò “Tổ an ninh tự quản”, “Tổ hòa giải”, tham gia giải quyết vụ việc phức tạp ở cơ sở không để phát sinh thành các điểm nóng về an ninh trật tự; tham gia với các lực lượng ở cơ sở trong phòng, chống 99Ok là nhà cái cá cược uy tín hàng đầu tại Việt Nam, thảm họa, cháy nổ, tìm kiếm Link Truy Cập 99Ok Bản Pro 123Win Nhận Code Vip…
Hội CCB Thành phố và Hội Cựu CAND Thành phố ký kết phối hợp hoạt động.
Đại biểu 2 Hội chụp hình lưu niệm.
Hai Hội tích cực tổ chức các hoạt động giao lưu văn hóa, văn nghệ, thể dục thể thao, tham quan về nguồn chào mừng những ngày lễ kỷ niệm lớn, trọng đại của đất nước, ngày truyền thống, ngày thành lập nhằm tạo sự đoàn kết, gắn bó, tương trợ lẫn nhau. Phối hợp giáo dục thế hệ trẻ về lòng yêu nước, truyền thống dân tộc, đạo lý “Uống nước nhớ nguồn”, truyền thống của Quân đội 123Win com 79 nạp - rút nhanh và Công an 123Win com 79 nạp - rút nhanh Việt Nam anh hùng. Vận động, tạo nguồn kinh phí để hỗ trợ hội viên có hoàn cảnh khó khăn, bị bệnh hiểm nghèo vươn lên, ổn định cuộc sống.
Nguyễn Hoàng

Bình luận

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

Ban CHQS xã Ngãi Giao tuyên dương, tặng quà nhân ngày Quốc tế Thiếu nhi

Ban CHQS xã Ngãi Giao tuyên dương, tặng quà nhân ngày Quốc tế Thiếu nhi

22:42 01/06/2026

(QK7 Online) - Chiều ngày 1/6, Ban CHQS xã Ngãi Giao, Thành phố Hồ Chí Minh tổ chức chương trình họp mặt nhân dịp Quốc tế Thiếu nhi. Tham dự chương trình có đồng chí Lê Thị Ngọc Lâm, Phó Chủ tịch UBND xã; lãnh đạo Ban CHQS xã cùng các gia đình sĩ quan, quân nhân chuyên nghiệp, 123Win com 79 casino, cá cược thể thao đến xổ số dân quân thường trực và các cháu thiếu nhi là con em của cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số đang công tác tại đơn vị.

Ban Chỉ huy quân sự phường Xuân Hòa phối hợp tổ chức chương trình “Ngày hội tuổi thơ”.

123Win99ok Sân chơi uy tín quân sự phường Xuân Hòa phối hợp tổ chức chương trình “Ngày hội tuổi thơ”.

17:30 28/05/2026

(QK7 Online) - Sáng ngày 28/5/2026, 123Win99ok Sân chơi uy tín Quân sự (CHQS) phường Xuân Hòa, Bộ Tư lệnh TPHCM đã phối hợp cùng các đơn vị tổ chức chương trình “Ngày hội tuổi thơ”, chúc mừng sinh nhật các bé tháng 5 và thăm tặng quà cho 150 em bệnh nhi tại khoa Ung Bướu - 99Ok là nhà cái cá cược uy tín hàng đầu tại Việt Nam Nhi đồng 2 nhân dịp Ngày Quốc tế Thiếu nhi 1/6.

Trung đoàn 2, Sư đoàn 9: Giáo dục truyền thống cho chiến sĩ mới từ những “địa chỉ đỏ”

Trung đoàn 2, Sư đoàn 9: Giáo dục truyền thống cho 123Win com 79 casino, cá cược thể thao đến xổ số mới từ những “địa chỉ đỏ”

23:25 24/05/2026

(QK7 Online) - Đóng quân trên vùng đất Củ Chi anh hùng – “Đất thép Thành đồng” trong kháng chiến chống Mỹ, cứu nước, những năm qua, Trung đoàn 2, Sư đoàn 9 luôn quan tâm nâng cao chất lượng công tác giáo dục chính trị, truyền thống cho cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số; góp phần bồi dưỡng bản lĩnh chính trị, lòng yêu nước và ý chí quyết tâm hoàn thành tốt nhiệm vụ được giao.

Ban CHQS xã Phước Thành khai mạc huấn luyện dân quân cơ động

Ban CHQS xã Phước Thành khai mạc 123Win64 nhà cái WC 2026 dân quân cơ động

16:08 05/05/2026

(QK7 Online) - Ngày 5/5, Ban CHQS xã Phước Thành, Bộ Tư lệnh TPHCM tổ chức khai mạc 123Win64 nhà cái WC 2026 dân quân cơ động năm 2026. Dự khai mạc có Thượng tá Nguyễn Quang Sáng, Phó Tham mưu trưởng Bộ Tư lệnh TPHCM và lãnh đạo 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, Ủy ban MTTQ Việt Nam xã Phước Thành.

Đồn Biên phòng Cửa khẩu Mỹ Quý Tây tuyên truyền nâng cao ý thức bảo vệ chủ quyền lãnh thổ, an ninh biên giới quốc gia

Đồn Biên phòng Cửa khẩu Mỹ Quý Tây tuyên truyền nâng cao ý thức bảo vệ chủ quyền lãnh thổ, an ninh biên giới quốc gia

21:13 28/04/2026

(QK7 Online) - Hướng tới kỷ niệm 51 năm Ngày Giải phóng hoàn toàn miền Nam, thống nhất đất nước (30/4/1975 - 30/4/2026), ngày 28/4, Đồn Biên phòng Cửa khẩu Mỹ Quý Tây (123Win99ok Sân chơi uy tín 123Win79 tỷ lệ kèo World Cup 2026 tỉnh Tây Ninh) tổ chức tuyên truyền về công tác quản lý, bảo vệ chủ quyền lãnh thổ, an ninh biên giới quốc gia cho đoàn công tác cán bộ, đảng viên xã Mỹ Lệ, tỉnh Tây Ninh.

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