【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ứ sáu, 17/04/2026, 17:12 (GMT+7)
1233 lượt xem

Giải thưởng toàn quốc về thông tin đối ngoại lần thứ XII, năm 2026

(QK7 Online) - Ngày 17/4, tại TPHCM, Ban Tuyên giáo và Dân vận Trung ương phối hợp với Đảng ủy Công an Trung ương tổ chức Hội nghị Báo cáo viên Trung ương toàn quốc tháng 4/2026 và phát động Giải thưởng toàn quốc về thông tin đối ngoại lần thứ XII, năm 2026.
Hội nghị nhằm cung cấp thông tin thời sự, định hướng công tác tuyên truyền cho đội ngũ báo cáo viên các cấp; góp phần nâng cao chất lượng, hiệu quả công tác tuyên truyền miệng, củng cố sự thống nhất trong Đảng, tạo đồng thuận xã hội.
Chủ trì hội nghị có: đồng chí Phạm Tất Thắng, Ủy viên Trung ương Đảng, Phó trưởng Ban Thường trực Ban Tuyên giáo và Dân vận Trung ương; Thượng tướng Lê Quốc Hùng - Ủy viên Trung ương Đảng, Phó Bí thư Đảng ủy Công an Trung ương, Thứ trưởng Bộ Công an.
Đại biểu tham dự hội nghị.
Giải thưởng toàn quốc về thông tin đối ngoại lần thứ XII, năm 2026 được tổ chức, nhằm tiếp tục khẳng định vai trò của công tác thông tin đối ngoại; tôn vinh các tập thể, cá nhân tiêu biểu; đồng thời khuyến khích, lan tỏa các sản phẩm truyền thông có giá trị, góp phần quảng bá hình ảnh Việt Nam ra thế giới.
Giải thưởng lần thứ XII được phát động trong bối cảnh đất nước đang đứng trước nhiều thời cơ và vận hội mới. Sau 40 năm đổi mới, tiềm lực, vị thế quốc gia ngày càng được nâng cao; đặc biệt, Đại hội XIV của Đảng đã tạo thêm động lực, khơi dậy tinh thần đoàn kết và khát vọng phát triển của dân tộc. Trong bối cảnh đó, thông tin đối ngoại không chỉ là kể câu chuyện Việt Nam mà phải truyền cảm hứng về Việt Nam đổi mới không ngừng, phải phản ánh được tầm vóc lịch sử văn hóa và thế của đất nước.
Phát biểu tại buổi lễ, đồng chí Phạm Tất Thắng, Phó Trưởng Ban Thường trực Ban Tuyên giáo và Dân vận Trung ương nhấn mạnh, đây là lần đầu tiên giải thưởng toàn quốc về thông tin đối ngoại được tổ chức lễ phát động tại TPHCM thay vì Hà Nội như các mùa giải trước đây. Việc thay đổi này mong muốn chuyển tải thông điệp về sự đổi mới của công tác thông tin đối ngoại trong giai đoạn mới.
Sau 11 mùa giải, giải thưởng toàn quốc về thông tin đối ngoại đã khẳng định vị thế là một sự kiện quốc gia thường niên uy tín.
Định hướng cho mùa giải mới, đồng chí Phạm Tất Thắng kỳ vọng các tác phẩm sẽ có đột phá về chiều sâu, lan tỏa và công nghệ. Về giá trị chiều sâu, mỗi tác phẩm, dù được thể hiện với thể loại, ngôn ngữ hay hình thức khác nhau, cần truyền tải được tư duy, tầm vóc và khát vọng phát triển của dân tộc; đồng thời thể hiện rõ tinh thần định hướng về đối ngoại, hội nhập quốc tế và các mục tiêu đã đề ra.
Về tính lan tỏa và hội nhập, cần tiếp tục mở rộng phạm vi tác động, tầm ảnh hưởng và đóng góp thiết thực của giải thưởng đối với quá trình hội nhập quốc tế, nhất là hội nhập kinh tế quốc tế trong giai đoạn phát triển mới. Đồng thời cần huy động sự tham gia rộng rãi hơn nữa của đội ngũ doanh nhân, cộng đồng doanh nghiệp trong nước, để những tác phẩm, sản phẩm đối ngoại được vinh danh cũng trở thành một hình thức ghi nhận có ý nghĩa đối với những nỗ lực đưa hình ảnh Việt Nam ra thị trường thế giới. Cùng với đó, cần thu hút mạnh mẽ hơn sự quan tâm, tham gia của cộng đồng người Việt Nam ở nước ngoài, bạn bè quốc tế và những người yêu mến Việt Nam trên toàn cầu, qua đó góp phần lan tỏa hình ảnh đất nước và con người Việt Nam ngày càng đầy đủ, mạnh mẽ, sâu sắc và giàu cảm hứng tới bạn bè quốc tế.
Giải thưởng khuyến khích sự tham gia của đông đảo các bạn trẻ, các KOLs, các lực lượng làm chủ công nghệ hiện đại đang trực tiếp định hình dòng chảy thông tin trên không gian mạng để đưa hình ảnh đất nước và con người Việt Nam đến với thế giới một cách hiện đại, hấp dẫn và hiệu quả.
Các đại biểu thực hiện nghi thức phát động giải thưởng.
Giải thưởng toàn quốc về thông tin đối ngoại lần thứ XII xét tặng các tác phẩm thuộc 8 hạng mục, bao gồm: báo/tạp chí tiếng Việt; báo/tạp chí tiếng nước ngoài; phát thanh; truyền hình; sách; ảnh; sản phẩm số - đa phương tiện; sáng kiến, sản phẩm có giá trị thông tin đối ngoại.
Cơ cấu giải thưởng cho mỗi hạng mục gồm 1 giải Nhất, 2 giải Nhì, 3 giải Ba và 5 giải Khuyến khích.
Về đối tượng, giải thưởng không giới hạn đối tượng tham gia, từ các cá nhân, tập thể trong và ngoài nước. các tác phẩm/sản phẩm tham gia giải thưởng được đăng tải, phát hành hoặc công bố trong khoảng thời gian từ ngày 1/7/2025 đến hết ngày 31/7/2026. Thời hạn cuối cùng nhận tác phẩm/sản phẩm là ngày 5/8/2026. Thể lệ giải thưởng được đăng tải trên website chính thức:
Lê Tiến

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