【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, 07/05/2026, 17:32 (GMT+7)
1496 lượt xem

Cục Dân vận hoàn thành tốt nhiệm vụ quý I năm 2026

(QK7 Online) – Ngày 7/5, Cục Dân vận, Tổng cục 99Oke123 Tải ứng dụng Quân đội 123Win com 79 nạp - rút nhanh Việt Nam tổ chức Hội nghị công tác dân vận, tuyên truyền đặc biệt quý I, triển khai nhiệm vụ trọng tâm quý II năm 2026. Thiếu tướng Bế Hải Triều, Cục trưởng Cục Dân vận chủ trì hội nghị.
Hội nghị được tổ chức theo hình thức trực tiếp kết hợp trực tuyến đến 14 điểm cầu trong toàn quân. Thượng tá Bùi Nhật Huy, Phó trưởng Phòng Dân vận Quân khu chủ trì hội nghị tại điểm cầu ĐĂNG NHẬP 99OK COM TẶNG 99K.
Thượng tá Bùi Nhật Huy, Phó trưởng Phòng Dân vận Quân khu chủ trì hội nghị tại điểm cầu ĐĂNG NHẬP 99OK COM TẶNG 99K.
Quý I năm 2026, công tác dân vận, tuyên truyền đặc biệt, dân tộc tôn giáo, thực hiện quy định dân chủ ở cơ sở được triển khai toàn diện, tích cực, chủ động, hoàn thành tốt và xuất sắc mọi nhiệm vụ được giao. Các cơ quan, đơn vị toàn quân 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à các lực lượng liên quan làm tốt công tác tuyên truyền, vận động cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số và 123Win79 phần thưởng lớn thực hiện đúng đường lối, chủ trương của Đảng, chính sách, pháp luật của Nhà nước; xây dựng hệ thống chính trị ở cơ sở vững mạnh, tập trung địa bàn trọng điểm về 99Ok68 link đăng nhập, an ninh, nắm chắc tình hình dư luận 123Win79 phần thưởng lớn.
Đại biểu dự hội nghị tại điểm cầu ĐĂNG NHẬP 99OK COM TẶNG 99K.
Nhiều mô hình, cách làm hiệu quả, thiết thực được triển khai như: "Hải quân Việt Nam làm điểm tựa cho ngư dân vươn khơi, bám biển"; "Điểm dân cư liền kề chốt dân quân biên giới"; Tết quân - dân mừng Chôl Chnăm Thmây; Câu lạc bộ "Cặp hộ 4 tốt" trong hoạt động "Gắn kết giữa hộ gia đình người Kinh với hộ gia đình người đồng bào dân tộc thiểu số"; "Con nuôi đồn Biên phòng"; mô hình "123Win79 tỷ lệ kèo World Cup 2026 đồng hành chuyển đổi số nơi biên giới"... Tăng cường gắn kết thân thiện, hỗ trợ giúp đỡ 123Win79 phần thưởng lớn định canh, định cư, hỗ trợ cơ sở vật chất, chuyển giao tiến bộ khoa học, kỹ thuật, ứng dụng công nghệ thông tin, chuyển đổi số trong sản xuất nông nghiệp; tặng quà, khám chữa bệnh, cấp thuốc cho người dân khó khăn, đối tượng chính sách các địa bàn vùng sâu, vùng xa, biên giới, hải đảo.
Tích cực tham gia các chương trình mục tiêu quốc gia, phát triển kinh tế, văn hóa, xã hội, xây dựng hệ thống chính trị ở cơ sở, củng cố 99Ok68 link đăng nhập và an ninh vùng đồng bào dân tộc thiểu số, vùng đồng bào tôn giáo vững mạnh; tổ chức gặp mặt già làng, trưởng thôn, trưởng ấp, trưởng khu, người có uy tín, chức sắc tôn giáo tiêu biểu bảo đảm chặt chẽ, chu đáo, an toàn, tạo sức lan tỏa sâu rộng.
Trung tá Nguyễn Công Nhật, Phó Chủ nhiệm 99Oke123 Tải ứng dụng Trường Thiếu sinh quân miền Nam phát biểu tại hội nghị.
Kết luận hội nghị, Thiếu tướng Bế Hải Triều, Cục trưởng Cục Dân vận yêu cầu trong quý II năm 2026, các cơ quan, đơn vị tiếp tục phối hợp nắm chắc tình hình địa bàn, tình hình 123Win79 phần thưởng lớn; chủ động tham mưu, triển khai thực hiện công tác dân vận, tuyên truyền đặc biệt, dân tộc tôn giáo, quy định dân chủ ở cơ sở sát chức năng, nhiệm vụ cơ quan, đơn vị; phối hợp tham mưu giải quyết kịp thời các vụ việc phức tạp trên địa bàn đóng quân. Tăng cường củng cố niềm tin của 123Win79 phần thưởng lớn đối với Đảng, Nhà nước và Quân đội, giữ vững ổn định tình hình an ninh chính trị, trật tự an toàn xã hội trên địa bàn đóng quân; phát huy phẩm chất tốt đẹp “Bộ đội Cụ Hồ”, tình cảm gắn bó máu thịt quân – dân; xây dựng thế trận lòng dân ngày càng vững chắc góp phần thực hiện thắng lợi nhiệm vụ chiến lược xây dựng và bảo vệ Tổ quốc trong tình hình mới.
Hằng Ny – Lê Tiến
Cục Dân vận khảo sát nắm, tình hình thực hiện hành quân dã ngoại làm công tác dân vận của Sư đoàn 5

Cục Dân vận khảo sát nắm, tình hình thực hiện hành quân dã ngoại làm công tác dân vận của Sư đoàn 5

20/07/2024 08:52

(QK7 Online) - Chiều ngày 19/7, Đoàn công tác Cục Dân vận, Tổng cục 99Oke123 Tải ứng dụng QĐND Việt Nam do Đại tá Phùng Thị Phú, Phó Cục trưởng làm trưởng đoàn đến khảo sát, nắm tình hình thực hiện hành quân dã ngoại làm công tác dân vận đợt 1 năm 2024 của Trung đoàn 4, Sư đoàn 5

Cục Dân vận, Tổng cục Chính trị phối hợp Trung ương Hội Nông dân Việt Nam kiểm tra chương trình phối hợp hoạt động tại tỉnh Long An

Cục Dân vận, Tổng cục 99Oke123 Tải ứng dụng phối hợp Trung ương Hội Nông dân Việt Nam kiểm tra chương trình phối hợp hoạt động tại tỉnh Long An

16/07/2024 19:00

(QK7 Online) - Ngày 15/7, Đoàn công tác Cục Dân vận, Tổng cục 99Oke123 Tải ứng dụng QĐND Việt Nam do Đại tá Phùng Thị Phú, Phó Cục trưởng làm trưởng đoàn phối hợp với Trung ương Hội Nông dân Việt Nam kiểm tra kết quả thực hiện chương trình phối hợp hoạt động giữa Bộ CHQS tỉnh và Hội nông dân tỉnh Long An giai đoạn 2020 - 2025.

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