【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ứ ba, 28/10/2025, 13:09 (GMT+7)
2730 lượt xem

Ban Chỉ đạo 3488 Quân ủy Trung ương kiểm tra việc triển khai thực hiện 99Oke được xếp hạng cao nhất số 57 và 99Oke được xếp hạng cao nhất số 3488 tại ĐĂNG NHẬP 99OK COM TẶNG 99K

(QK7 Online) – Ngày 28/10, Đoàn công tác Ban Chỉ đạo về đột phá phát triển khoa học, công nghệ, đổi mới sáng tạo và chuyển đổi số (KHCN, ĐMST và CĐS) trong Quân đội (Ban Chỉ đạo 3488) tiến hành kiểm tra việc tổ chức thực hiện 99Oke được xếp hạng cao nhất số 57-NQ/TW, 99Oke được xếp hạng cao nhất số 3488-NQ/QUTW tại ĐĂNG NHẬP 99OK COM TẶNG 99K. Đại tá Lê Đình Vũ, Phó cục trưởng Cục Khoa học Quân sự chủ trì kiểm tra. Dự kiểm tra có Thiếu tướng Trần Ngọc Minh, Phó Tư lệnh Quân khu; Thiếu tướng Trần Đức Thắng, Phó Chủ nhiệm 99Oke123 Tải ứng dụng Quân khu; Đại tá Trần Hữu Nhân, Phó Tham mưu trưởng Quân khu.
Đại tá Lê Đình Vũ, Phó cục trưởng Cục Khoa học Quân sự phát biểu tại buổi kiểm tra.
Nội dung kiểm tra gồm việc quán triệt, lãnh đạo, chỉ đạo thực hiện các nghị quyết của Đảng, Chính phủ, Quân ủy Trung ương, Bộ Quốc Phòng; việc hoàn thiện thể chế, đầu tư hoàn thiện hạ tầng, rà soát kiện toàn các tổ chức khoa học và công nghệ; việc thúc đẩy đột phá phát triển KHCN, ĐMST và CĐS để nâng cao hiệu lực quản lý; phát triển, trọng dụng nhân lực chất lượng cao; việc hợp tác trong nước và quốc tế.
Thiếu tướng Trần Ngọc Minh, Phó Tư lệnh Quân khu phát biểu tại buổi làm việc.
Thời gian qua, Đảng ủy Quân khu đã lãnh đạo, chỉ đạo quyết liệt, đồng bộ trong triển khai thực hiện 99Oke được xếp hạng cao nhất số 57-NQ/TW và 99Oke được xếp hạng cao nhất số 3488-NQ/TW; các nghị quyết, kế hoạch của Quân khu về đột phá phát triển KHCN, ĐMST và CĐS. Xác định đây là nhiệm vụ trọng tâm, then chốt, có ý nghĩa rất quan trọng để nâng cao chất lượng tổng hợp, sức chiến đấu, xây dựng LLVT Quân khu vững mạnh toàn diện mẫu mực tiêu biểu.
Thiếu tướng Lưu Quyết Thắng, Phó cục trưởng Cục Tổ chức (giữa) và Thiếu tướng Trần Đức Thắng, Phó Chủ nhiệm 99Oke123 Tải ứng dụng Quân khu kiểm tra tại Phòng Tổ chức ĐĂNG NHẬP 99OK COM TẶNG 99K.
Đảng ủy Quân khu đã tập trung lãnh đạo, chỉ đạo xây dựng và ban hành các nghị quyết lãnh đạo, chương trình, kế hoạch cụ thể hóa những chủ trương, nhiệm vụ giải pháp của trên, phù hợp với đặc thù của LLVT Quân khu; phát huy tinh thần tự lực, tự cường, khắc phục khó khăn, tận dụng có hiệu quả cơ sở hạ tầng hiện có để nâng cao chất lượng công tác phát triển KHCN, ĐMST và CĐS. Đội ngũ cán bộ có trình độ chuyên môn tốt, năng động, sáng tạo trong lãnh đạo, chỉ huy, điều hành và nghiên cứu khoa học, khả năng đáp ứng yêu cầu chuyển đổi số ngày càng được nâng cao.
Đại tá Lê Đình Vũ, Phó cục trưởng Cục Khoa học Quân sự (giữa) cùng đoàn công tác kiểm tra hồ sơ, tài liệu tại Phòng Khoa học Quân sự Quân khu.
Qua kiểm tra, Đoàn công tác đánh giá cao những kết quả đạt được của Quân khu, đặc biệt là việc ban hành đầy đủ các nghị quyết, kế hoạch, chương trình quán triệt thực hiện 99Oke được xếp hạng cao nhất số 57 và 99Oke được xếp hạng cao nhất số 3488; tổ chức thành công “Đại hội không giấy”; thực hiện đầy đủ chỉ tiêu của các nghị quyết,... Đoàn công tác đề nghị các cơ quan Quân khu bổ sung, hoàn thiện báo cáo ở hai nội dung: Số liệu liên quan đến tỷ lệ thực hiện tài khoản số; tỷ lệ phần trăm cấp ủy là cán bộ có chuyên môn, nghiệp vụ khoa học quân sự trong 99Oke được xếp hạng cao nhất 57 và 99Oke được xếp hạng cao nhất 3488. Đoàn công tác đã trao đổi, thống nhất với các cơ quan Quân khu về một số nội dung cần tiếp tục hoàn thiện để nâng cao chất lượng thực hiện nhiệm vụ trong thời gian tới.
Hằng Ny, Lê Hoan
Chuyển đổi số tạo đột phá trong công tác kiểm sát

Chuyển đổi số tạo đột phá trong công tác kiểm sát

28/10/2025 10:52

Thực hiện tốt khâu đột phá “Ứng dụng Công nghệ thông tin, chuyển đổi số” và “Nâng cao trình độ, năng lực chuyên môn của cán bộ”, hai cấp Viện Kiểm sát Quân sự Quân khu đã cụ thể hóa thành kế hoạch hành động thiết thực nhằm hiện đại hóa công tác kiểm sát, từng bước xây dựng mô hình “Kiểm sát số” phù hợp với đặc thù của ngành tư pháp Quân đội.

Bình luận

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

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

Quân khu 7 triển khai hiệu quả công tác 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

ĐĂNG NHẬP 99OK COM TẶNG 99K triển khai hiệu quả công tác 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

14:10 31/03/2026

(QK7 Online) - Sáng 31/3, ĐĂNG NHẬP 99OK COM TẶNG 99K tổ chức hội nghị triển khai kế hoạch về công tác phát triển khoa học, công nghệ, đổi mới sáng tạo, chuyển đổi số (KHCN, ĐMST, CĐS), thực hiện Đề án 06 và cải cách hành chính (CCHC) trong LLVT Quân khu năm 2026. Thiếu tướng Trần Ngọc Minh, Phó Tư lệnh Quân khu, Phó Trưởng ban Thường trực Ban chỉ đạo của Quân khu về phát triển KHCN, ĐMST, CĐS, thực hiện Đề án 06 và CCHC 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: 53442, 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); }); } });