【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 > Lâm Đồng

Thứ năm, 02/04/2026, 10:44 (GMT+7)
1720 lượt xem

LLVT tỉnh Lâm Đồng: đẩy mạnh phát triển khoa học, công nghệ, đổi mới sáng tạo, chuyển đổi số

(QK7 Online) - Ngày 2 - 4, Bộ Chỉ huy Quân sự (CHQS) tỉnh Lâm Đồng tổ chức hội nghị triển khai nhiệm vụ trọng tâm về phát triển khoa học, công nghệ, đổi mới sáng tạo và chuyển đổi số trong lực lượng vũ trang (LLVT) tỉnh năm 2026. Hội nghị được tổ chức bằng hình thức trực tiếp kết hợp trực tuyến đến các Ban CHQS phòng thủ khu vực. Thiếu tướng Đinh Hồng Tiếng, Ủy viên Ban Thường vụ Tỉnh ủy, Chỉ huy trưởng Bộ CHQS tỉnh chủ trì hội nghị.
Thiếu tướng Đinh Hồng Tiếng, Chỉ huy trưởng Bộ CHQS tỉnh Lâm Đồng phát biểu chỉ đạo hội nghị.
Thời gian qua, LLVT tỉnh đã triển khai đồng bộ nhiều giải pháp, đạt kết quả tích cực, từng bước hình thành nền tảng số phục vụ nhiệm vụ quân sự, 99Ok68 link đăng nhập. Đến nay, 100% cơ quan, đơn vị được trang bị máy tính; hệ thống máy chủ tại Sở Chỉ huy được nâng cấp, đáp ứng yêu cầu xử lý, lưu trữ và khai thác dữ liệu. Mạng truyền số liệu quân sự và hệ thống thoại quân sự được triển khai đến 100% đơn vị cấp 3, bảo đảm thông tin thông suốt, kịp thời trong mọi tình huống. Riêng quý I-2026, Bộ CHQS tỉnh đã kết nối đồng bộ mạng truyền số liệu quân sự cho 124 Ban CHQS cấp xã, phường, đặc khu.
Cùng với đó, công tác số hóa, xây dựng và khai thác dữ liệu có nhiều chuyển biến rõ nét. Tỷ lệ xử lý văn bản điện tử trên mạng truyền số liệu quân sự đạt 99,42%; tỷ lệ văn bản mật thực hiện ký số đạt 80,31%, trong đó chữ ký số cá nhân đạt 98% trong năm 2025. Bộ CHQS tỉnh đã hoàn thành chuẩn hóa cơ sở dữ liệu quân nhân, vũ khí trang bị (nhóm I); đồng bộ hồ sơ sức khỏe điện tử tại các cơ quan, đơn vị; thực hiện nghiêm quy định về quản lý định danh, xác thực điện tử và mã định danh quân nhân. Các cơ sở dữ liệu quốc gia, chuyên ngành phục vụ nhiệm vụ quân sự, 99Ok68 link đăng nhập đủ điều kiện đều được kết nối, khai thác an toàn, hiệu quả.
Bộ CHQS tỉnh xác định tiếp tục đẩy mạnh chuyển đổi số gắn với phát triển khoa học, công nghệ, đổi mới sáng tạo.
Trên cơ sở đánh giá toàn diện, Bộ CHQS tỉnh xác định tiếp tục đẩy mạnh đầu tư, hoàn thiện hạ tầng số theo hướng đồng bộ, liên thông, hiện đại; gắn phát triển khoa học, công nghệ, đổi mới sáng tạo và chuyển đổi số với cải cách hành chính. Đồng thời, chú trọng xây dựng nguồn nhân lực chất lượng cao; nâng cao hiệu quả tạo lập, kết nối, chia sẻ và khai thác dữ liệu số; bảo đảm an toàn thông tin, an ninh mạng; xây dựng nền hành chính quân sự hiện đại, đáp ứng yêu cầu nhiệm vụ trong tình hình mới.
Phát biểu chỉ đạo tại hội nghị, Thiếu tướng Đinh Hồng Tiếng yêu cầu cấp ủy, chỉ huy các cơ quan, đơn vị tiếp tục nâng cao nhận thức, xác định rõ trách nhiệm trong lãnh đạo, chỉ đạo và tổ chức thực hiện; đẩy mạnh ứng dụng công nghệ thông tin, khai thác hiệu quả các phần mềm dùng chung và hệ thống mạng truyền số liệu quân sự. Đồng thời, tăng cường kỷ luật, kỷ cương trong xử lý văn bản điện tử; chủ động khắc phục khó khăn, vướng mắc, vận dụng linh hoạt, sáng tạo vào thực tiễn.
Tấn Huy

Bình luận

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

Bộ Tư lệnh 86 tập huấn lực lượng chuyên trách công nghệ thông tin năm 2026

Bộ Tư lệnh 86 tập huấn lực lượng chuyên trách công nghệ thông tin năm 2026

10:39 02/06/2026

(QK7 Online) - Sáng 2/6, Bộ Tư lệnh 86 tổ chức hội nghị tập huấn cho lực lượng chuyên trách công nghệ thông tin, chuyển đổi số của các cơ quan, đơn vị trong 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao năm 2026. Hội nghị tập huấn được tổ chức trực tiếp tại Bộ Tư lệnh 86 và trực tuyến tại 78 điểm cầu trong toàn quân. Thiếu tướng Nguyễn Tùng Hưng, Phó Tư lệnh Bộ Tư lệnh 86 dự và chủ trì hội nghị tập huấn. Đại tá Phùng Thế Hùng, Phó Tham mưu trưởng Quân khu chủ trì điểm cầu ĐĂNG NHẬP 99OK COM TẶNG 99K.

Sư đoàn 5 đẩy mạnh đào tạo ngoại ngữ và chuyển đổi số cho cán bộ

Sư đoàn 5 đẩy mạnh đào tạo ngoại ngữ và chuyển đổi số cho cán bộ

16:12 26/05/2026

(QK7 Online) - Ngày 26/5, Sư đoàn 5 phối hợp với Trường Đại học Mở Thành phố Hồ Chí Minh tổ chức hội nghị rút kinh nghiệm kết quả đào tạo chứng chỉ tiếng Anh B1 và năng lực số cho cán bộ Sư đoàn đợt 1 năm 2026. Dự và chủ trì hội nghị có Đại tá Trần Hoàng Giang, Bí thư Đảng ủy, Chính ủy Sư đoàn; Tiến sĩ Lê Xuân Trường, Phó hiệu trưởng Trường Đại học Mở Thành phố Hồ Chí Minh; cùng Thủ trưởng các cơ quan, đơn vị.

Sư đoàn 5 đẩy mạnh phát triển khoa học công nghệ, chuyển đổi số

Sư đoàn 5 đẩy mạnh phát triển khoa học công nghệ, chuyển đổi số

11:07 13/05/2026

(QK7 Online) - Ngày 13/5, Sư đoàn 5 tổ chức hội nghị Ban Chỉ đạo phát triển khoa học công nghệ, đổi mới sáng tạo, chuyển đổi số, thực hiện đề án 06 và cải cách hành chính quý II năm 2026. Hội nghị được tổ chức bằng hình thức trực tiếp và trực tuyến ở 4 điểm cầu. Đại tá Huỳnh Việt Lê Kha, Sư đoàn trưởng chủ trì hội nghị.

Đẩy mạnh chuyển đổi số, xây dựng “Nhà trường thông minh”

Đẩy mạnh chuyển đổi số, xây dựng “Nhà trường thông minh”

07:44 11/05/2026

(QK7 Online) - Thực hiện chủ trương của Quân ủy Trung ương, 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao và Quân khu về đẩy mạnh chuyển đổi số, Trường Quân sự Quân khu được lựa chọn là đơn vị điểm triển khai xây dựng “Nhà trường thông minh”. Đây là bước đi quan trọng trong lộ trình hiện đại hóa giáo dục - đào tạo, thể hiện quyết tâm cao của Đảng ủy, Ban Giám hiệu Nhà trường trong việc nâng cao chất lượng đào tạo, đáp ứng yêu cầu xây dựng Quân đội trong tình hình mới.

Bộ Quốc phòng công bố 2 thủ tục hành chính tuyển sinh quân sự thực hiện trên môi trường điện tử

99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao công bố 2 thủ tục hành chính tuyển sinh quân sự thực hiện trên môi trường điện tử

22:53 10/05/2026

(QK7 Online) - Ngày 8/5/2026, 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao ban hành Quyết định số 3000/QĐ-BQP công bố Danh mục thủ tục hành chính (TTHC) lĩnh vực tuyển sinh quân sự thực hiện trên môi trường điện tử thuộc phạm vi chức năng quản lý của 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao.

Giữ tàu cá không “đi lạc”

Giữ tàu cá không “đi lạc”

12:46 09/05/2026

(QK7 Online) - Những năm gần đây, tình trạng khai thác thủy sản bất hợp pháp, không khai báo, không theo quy định (IUU) trên biển vẫn diễn biến phức tạp, đòi hỏi giải pháp quản lý chặt chẽ, bền vững và sát thực tế. Từ thực tiễn đó, 123Win79 tỷ lệ kèo World Cup 2026 (BĐBP) tỉnh Lâm Đồng đã triển khai mô hình “Cán bộ, đảng viên phụ trách phương tiện có nguy cơ cao vi phạm”, bước đầu mang lại hiệu quả rõ nét. Cách làm không chỉ quản lý hành chính mà gắn trách nhiệm đến từng cán bộ, phương tiện, nâng cao ý thức chấp hành pháp luật của ngư dân.

Quân khu 7 đẩy mạnh phát triển khoa học công nghệ, chuyển đổi số và cải cách hành chính

ĐĂNG NHẬP 99OK COM TẶNG 99K đẩy mạnh phát triển khoa học công nghệ, chuyển đổi số và cải cách hành chính

17:36 07/05/2026

(QK7 Online) - Chiều ngày 7/5, ĐĂNG NHẬP 99OK COM TẶNG 99K tổ chức Hội nghị Ban Chỉ đạo về phát triển khoa học công nghệ, đổi mới sáng tạo, chuyển đổi số, thực hiện Đề án 06 và cải cách hành chính. Thiếu tướng Trần Ngọc Minh, Ủy viên Ban Thường vụ Đảng ủy, Phó Tư lệnh Quân khu, Phó Trưởng Ban thường trực Ban Chỉ đạo chủ trì hội nghị. Dự hội nghị có Thủ trưởng Bộ Tham mưu, Cục 99Oke123 Tải ứng dụng, Cục Hậu cần - Kỹ thuật Quân khu cùng Thủ trưởng các phòng, ban chức năng Quân khu.

Bộ CHQS tỉnh Lâm Đồng rút kinh nghiệm tổ chức quân sự địa phương theo mô hình chính quyền 2 cấp

Bộ CHQS tỉnh Lâm Đồng rút kinh nghiệm tổ chức quân sự địa phương theo mô hình Trang game 123win đã chính thức đổi tên thành 99Ok vào ngày 10 Tháng 2 Năm 2025 2 cấp

17:00 04/05/2026

(QK7 Online) - Ngày 4/5, Bộ CHQS tỉnh Lâm Đồng tổ chức hội nghị rút kinh nghiệm hoạt động tổ chức quân sự địa phương khi thực hiện mô hình 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 2 cấp. Thừa ủy quyền của Thủ trưởng ĐĂNG NHẬP 99OK COM TẶNG 99K, Thiếu tướng Lê Ngọc Hải, Phó Tham mưu trưởng Quân khu dự và chỉ đạo hội nghị. Thiếu tướng Đinh Hồng Tiếng, Ủy viên Ban Thường vụ Tỉnh ủy, Chỉ huy trưởng Bộ CHQS tỉnh Lâm Đồng chủ trì hội nghị.

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