【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, 17:21 (GMT+7)
1550 lượt xem

Trung đoàn 4 , Sư đoàn 5: Nâng cao chất lượng phòng trào “Bình dân học vụ số”

(QK7 Online) - Thời gian qua phong trào “Bình dân học vụ số” đã và đang được lan tỏa mạnh mẽ tại Trung đoàn 4, Sư đoàn 5. Các cơ quan, đơn vị đã triển khai sâu rộng với nhiều mô hình, cách làm hay nhằm nâng cao nhận thức và kỹ năng số cho các cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số, góp phần xây dựng đơn vị vững mạnh toàn diện “Mẫu mực, tiêu biểu” trong thời kỳ mới.
Cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số Trung đoàn 4, Sư đoàn 5 tích cực học tập nâng cao kiến thức chuyển đổi số và phong trào "Bình dân học vụ số".
Trong bối cảnh chuyển đổi số đang trở thành xu thế tất yếu hiện nay, Đảng ủy Trung đoàn 4 đã ra 99Oke được xếp hạng cao nhất về phát triển khoa học, công nghệ, đổi mới sáng tạo, chuyển đổi số và cải cách hành chính trong Trung đoàn; tổ chức phát động thi đua; quán triệt nghiêm túc các văn bản chỉ đạo, hướng dẫn của trên về triển khai phong trào “Bình dân học vụ số” đến các đối tượng. Để lan tỏa phong trào sâu rộng, toàn diện, các cơ quan, đơn vị đã vận động cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số thi đua học tập, rèn luyện kỹ năng số, tích cực tham gia vào quá trình chuyển đổi số của đơn vị. Tích cực ứng dụng công nghệ thông tin, các nền tảng số, điển hình như Qime, trí tuệ nhân tạo AI (ChatGPT, Agnes, DeepL) hỗ trợ trong công tác quản lý, giải quyết văn bản (không mật) trên môi trường điện tử. Trung đoàn 4 xây dựng các hội thi tìm hiểu bằng hình thức trực tuyến lan tỏa nền tảng số; phát huy được tính sáng tạo, đổi mới. Kết quả, năm 2025 đơn vị có 2 sáng kiến cải tiến kỹ thuật đạt giải B và giải C cấp Sư đoàn gồm: Sáng kiến đăng ký thăm quân nhân trực tuyến và sáng kiến quản lý Phòng Hồ Chí Minh. Đồng thời sử dụng trí tuệ nhân tạo xây dựng Video tuyên truyền trên mạng xã hội, truyền thanh nội bộ, “mỗi tối 1 câu chuyện lịch sử” bằng giọng đọc AI đã được Ban 99Oke123 Tải ứng dụng, Trung đoàn 4 áp dụng đạt kết quả tốt.
Xây dựng các phòng học tập trung chuyển đổi số và "Bình dân học vụ số" ở Trung đoàn 4.
Song song với các nội dung 123Win64 nhà cái WC 2026 kiến thức quân sự, chính trị, việc trang bị kỹ năng số cho bộ đội là yêu cầu tất yếu để xây dựng Quân đội tiến lên hiện đại. Phong trào “Bình dân học vụ số” vừa trang bị kiến thức, kỹ năng số cần thiết cho bộ đội, đồng thời khơi dậy động lực tự thân trong học tập, rèn luyện và ứng dụng công nghệ, góp phần nâng cao chất lượng 123Win64 nhà cái WC 2026 và xây dựng chính quy trong toàn Trung đoàn. Đặc biệt thời gian qua, “Tổ học tập Bình dân học vụ số” đã mang lại hiệu quả rõ rệt, giúp các cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số nâng cao trình độ, từ đó lan tỏa tinh thần học tập, vận dụng công nghệ trong toàn đơn vị. Tiểu đoàn 1, Trung đoàn 4 là một trong các đơn vị “xung kích” trong phong trào “Bình dân học vụ số”. Ngay khi có trang web: https://qlms.bqp tại nền tảng bình dân học vụ số của 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao, cơ quan đã lập kế hoạch, xác định nội dung và phân công cán bộ phụ trách. Tiểu đoàn đã triển khai cho tất cả cán bộ là sĩ quan, quân nhân chuyên nghiệp tạo tài khoản để tham gia đủ 10 khóa học về kiến thức số, kỹ năng số cơ bản. Đồng thời, kết hợp triển khai cá nhân hóa việc học tập phong trào tại máy tính kết nối mạng quân sự được trang bị phục vụ công tác.
Trung đoàn 4 xây dựng các hội thi tìm hiểu bằng hình thức trực tuyến lan tỏa nền tảng số.
Trung tá Phạm Văn Ước, Trung đoàn trưởng Trung đoàn 4 chia sẻ: “Trên thực tế, quá trình triển khai phong trào “Bình dân học vụ số” tại cơ quan, đơn vị gặp không ít khó khăn do cán bộ thường xuyên đi công tác, ảnh hưởng đến việc tập trung học tập, tiếp thu các nội dung, kiến thức, kỹ năng số. Hiện nay, để khắc phục vấn đề này, Trung đoàn 4 đã thực hiện đưa nội dung học tập vào lịch công tác hằng tuần. Cụ thể đầu giờ mỗi buổi sáng, chiều ngày làm việc, tất cả cán bộ tập trung tại phòng giao ban cơ quan, được bố trí màn hình có kết nối mạng quân sự. Nhờ được thực hiện thường xuyên nên ý thức tự giác nghiên cứu các khóa học của cán bộ, chiến sỹ được nâng lên, 100% đã nắm được kiến thức và hoàn thành bài kiểm tra. Bên cạnh đó các chỉ tiêu về chuyển đổi số được Trung đoàn xác định đưa vào bình xét tổ chức Đảng, đảng viên cuối năm.
Trung đoàn 4 phát động phong trào thi đua "LLLVT Quân khu thi đua đổi mới sáng tạo và chuyển đổi số" và "Bình dân học vụ số".
Có thể khẳng định, ở Sư đoàn 5 nói chung và Trung đoàn 4 nói riêng, việc chuyển đổi số, áp dụng công nghệ số vào quá trình công tác đóng vai trò đặc biệt quan trọng đối với kết quả thực hiện nhiệm vụ. Với sự quyết tâm cao, triển khai chặt chẽ, cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số các cơ quan, đơn vị sẽ có kỹ năng số cơ bản, tự tin làm việc trong thời đại số, góp phần hiện thực hóa mục tiêu xây dựng đơn vị số, chính quy, hiện đại và nâng cao bản lĩnh, năng lực toàn diện cho người quân nhân trong kỷ nguyên số.
Văn Tuấn

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