【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

M.123win30.com cá cược trực tuyến > Chuyển đổi số - Công nghệ

Thứ tư, 07/01/2026, 18:15 (GMT+7)
4973 lượt xem

Công ty Tây Nam đạt nhiều kết quả nổi bật trong xây dựng đơn vị điểm về chuyển đổi số

(QK7 Online) - Chiều ngày 7/1, Công ty Tây Nam tổ chức Hội nghị sơ kết xây dựng đơn vị điểm về chuyển đổi số giai đoạn 2024 – 2025. Thượng tá Huỳnh Gia Bảo, Tổng Giám đốc Công ty Tây Nam chủ trì hội nghị. Dự Hội nghị có Đại tá Trương Kim Hoàng, Chủ tịch Công ty Tây Nam.
Các đại biểu dự Hội nghị sơ kết xây dựng đơn vị điểm về chuyển đổi số giai đoạn 2024 – 2025 của Công ty Tây Nam.
Giai đoạn 2024 – 2025, công tác chuyển đổi số của Công ty Tây Nam đã có bước phát triển mạnh mẽ, đồng bộ và toàn diện hơn so với các năm trước, tạo nên sự chuyển biến tích cực, từng bước hình thành hệ sinh thái số trong toàn công ty. Nổi bật là các cơ quan, đơn vị được định hướng, chỉ đạo đẩy mạnh phong trào nghiên cứu cải tiến kỹ thuật, ứng dụng hiệu quả vào hoạt động sản xuất kinh doanh và trong hoạt động chỉ huy, chỉ đạo, điều hành.
Công tác phát triển hạ tầng số được Công ty Tây Nam quan tâm đầu tư đồng bộ, hiện đại, giúp Công ty thúc đẩy phát triển chuyển đổi số một cách thực chất, hiệu quả. Thiết bị kết nối đường truyền số liệu quân sự được đầu tư nâng cấp. Đa số các văn bản được ký số, rút ngắn thời gian xử lý nhưng vẫn đảm bảo yêu cầu bảo mật theo quy định.
Đại diện Cảng ICD Tây Nam - đơn vị điểm về chuyển đổi số của Tổng Công ty Tây Nam báo cáo tham luận tại hội nghị.
Song song với việc đầu tư hạ tầng, Công ty chú trọng triển khai các ứng dụng số phù hợp với đặc thù từng lĩnh vực sản xuất kinh doanh như: Khối văn phòng được triển khai triệt để hệ thống V – Office, là nơi chuyển đổi số mạnh nhất về quản trị điều hành; Nhà hàng, khách sạn ứng dụng số trong quản lý, điều hành với hệ thống FO Smiles; Công ty Kho vận xăng dầu triển khai hiệu quả các phần mềm EGAS, Dibee, hệ thống định vị GPS xe bồn và POS điện tử; xí nghiệp xây dựng triển khai Bravo, Fast, Misa kết hợp ứng dụng thư điện tử và số hoá hồ sơ trong công tác văn thư, lưu trữ. Nổi bật là Cảng ICD Tây Nam, đơn vị điểm về chuyển đổi số của Tổng Công ty Tây Nam xây dựng và vận hành nhiều phần mềm cốt lõi, Cảng ICD đã tự động hoá 70 – 80% nghiệp vụ, là khối có tốc độ và chiều sâu chuyển đổi số mạnh mẽ nhất trong toàn Công ty, tạo dựng thương hiệu “Cảng số Tây Nam” trong khu vực.
Thượng tá Huỳnh Gia Bảo, Tổng Giám đốc Công ty Tây Nam kết luận hội nghị.
Kết luận Hội nghị, Thượng tá Huỳnh Gia Bảo, Tổng Giám đốc Công ty Tây Nam biểu dương tinh thần nỗ lực, chủ động của các tập thể cá nhân trong thời gian qua, đồng thời yêu cầu các tập thể, cá nhân trong Công ty tiếp tục phấn đấu, phát huy những thành tích đạt được, đẩy mạnh quyết liệt hơn nữa công tác chuyển đổi số, tiếp tục hoàn thiện cơ sở hạ tầng, đẩy mạnh liên thông hệ thống, đảm bảo an toàn, bảo mật thông tin và tăng cường đổi mới, sáng tạo, đặc biệt là phát triển nguồn nhân lực, nâng cao kỹ năng số cho đội ngũ cán bộ, nhân viên. Tổ chức rút kinh nghiệm, hội nghị chuyên đề hàng tháng, quý, sơ kết, tổng kết công tác chuyển đổi số để kịp thời đánh giá kết quả và tiến độ thực hiện nhiệm vụ, chỉ tiêu đề ra.
Đồng chí mong muốn các tập thể, cá nhân kịp thời đề xuất, tham mưu với cấp trên những vấn đề vướng mắc để kịp thời định hướng, giải quyết, đảm bảo công tác chuyển đổi số được triển khai đồng bộ, thực chất, hiệu quả và sát với yêu cầu nhiệm vụ trong tình hình mới.
Dịp này, Công ty Tây Nam trao khen thưởng cho các tập thể, cá nhân đạt thành tích xuất sắc trong công tác xây dựng đơn vị điểm về chuyển đổi số giai đoạn 2024- 2025.
Công ty Tây Nam trao khen thưởng cho các tập thể, cá nhân đạt thành tích xuất sắc trong công tác xây dựng đơn vị điểm về chuyển đổi số giai đoạn 2024 -2025.
Bá Phúc, Ngọc Trâm

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.

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.

Tập huấn phần mềm ngành Tổ chức phục vụ chuyển đổi số ngành Công tác Đảng, công tác chính trị

Tập huấn phần mềm ngành Tổ chức phục vụ chuyển đổi số ngành Công tác Đảng, công tác chính trị

17:06 23/04/2026

(QK7 Online) - Ngày 23/4, Cục Tổ chức, Tổng cục 99Oke123 Tải ứng dụng Quân đội 123Win com 79 nạp - rút nhanh Việt Nam phối hợp với Viện Công nghệ thông tin - Điện tử, Viện Khoa học và Công nghệ Bộ Tổng Tham mưu tổ chức tập huấn triển khai thử nghiệm phần mềm ngành Tổ chức thuộc hệ sinh thái số phục vụ chuyển đổi số ngành công tác Đảng, công tác chính trị (CTĐ, CTCT) trong 123 Win 88ok trang chủ chính thức Quân đội. Dự và chỉ đạo tập huấn có Thiếu tướng Lưu Quyết Thắng, Phó Cục trưởng Cục Tổ chức, Tổng Cục 99Oke123 Tải ứng dụng Quân đội 123Win79 phần thưởng lớn Việt Nam. Dự tập huấn có Đại tá Lê Minh Đức, Phó Viện trưởng Viện Công nghệ thông tin - Điện tử, Viện Khoa học và Công nghệ Bộ Tổng Tham mưu.

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ố

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ố

10:44 02/04/2026

(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ị.

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