【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

99Oke Nhà Cái

Chủ nhật, 29/10/2023, 13:51 (GMT+7)
4457 lượt xem

Trách nhiệm UBND xã trong việc tuyển chọn, gọi công dân nhập ngũ năm 2024

(QK7 Online) - Tại khoản 4, Điều 6, Thông tư 148/2018/TT-BQP quy định về trách nhiệm của UBND xã trong việc tuyển chọn, gọi công dân nhập ngũ năm 2024 như sau:
- Thực hiện trách nhiệm theo quy định tại Khoản 1, Điều 6, Thông tư 148/2018/TT-BQP và chỉ đạo Hội đồng nghĩa vụ quân sự, các ban, ngành liên quan và các thôn thực hiện tuyển quân đúng quy định, bảo đảm đủ chỉ tiêu, chất lượng giao quân.
- Chỉ đạo các thôn tổ chức bình cử, đề xuất công dân nam trong độ tuổi thực hiện nghĩa vụ quân sự đi sơ tuyển thực hiện nghĩa vụ quân sự đúng quy định, bảo đảm dân chủ, công bằng, công khai, chất lượng, hiệu quả.
- Trực tiếp sơ tuyển, xét duyệt công dân nhập ngũ; báo cáo Ủy ban Nhân dân cấp huyện danh sách công dân đủ điều kiện gọi nhập ngũ, tạm hoãn gọi nhập ngũ và miễn gọi nhập ngũ.
Lập hồ sơ nghĩa vụ quân sự và các thủ tục liên quan đối với công dân đủ điều kiện gọi nhập ngũ để bàn giao cho 123Win99ok Sân chơi uy tín quân sự cấp huyện.
Thực hiện niêm yết công khai tại trụ sở Ủy ban Nhân dân cấp xã theo quy định và thông báo công khai đến từng thôn, những nội dung sau:
+ Chỉ tiêu tuyển quân huyện giao cho xã;
+ Điều kiện, tiêu chuẩn tuyển quân; trường hợp tạm hoãn gọi nhập ngũ và miễn gọi nhập ngũ;
+ Danh sách công dân trong diện gọi nhập ngũ;
+ Danh sách công dân tạm hoãn gọi nhập ngũ, miễn gọi nhập ngũ;
+ Danh sách công dân đủ điều kiện nhập ngũ;
+ Kết quả phân loại sức khỏe theo kết luận của Hội đồng khám sức khỏe thực hiện nghĩa vụ quân sự;
+ Danh sách công dân trúng tuyển nghĩa vụ quân sự sẵn sàng nhập ngũ.
- Chỉ đạo 123Win99ok Sân chơi uy tín quân sự xã phối hợp với các ban, ngành liên quan hướng dẫn những công dân được phát lệnh gọi nhập ngũ, lập tờ khai tham gia bảo hiểm y tế (theo mẫu), có xác nhận của Ủy ban Nhân dân cấp xã để bàn giao cho Ban chỉ huy cấp huyện cùng với hồ sơ nghĩa vụ quân sự.
- Chỉ đạo 123Win99ok Sân chơi uy tín quân sự cấp xã phối hợp với Công an xã và các ban, ngành, đoàn thể nắm chắc tiêu chuẩn chính trị, đạo đức và những vấn đề mới phát sinh của công dân chuẩn bị nhập ngũ, kịp thời thông tin và cung cấp để 123Win99ok Sân chơi uy tín quân sự cấp huyện và đơn vị nhận quân biết, quản lý. Phối hợp với đơn vị nhận quân và gia đình giải quyết quân nhân đào ngũ, bỏ ngũ theo quy định của pháp luật.
Cơ quan nào đăng ký nghĩa vụ quân sự năm 2024?
Điều 15, Luật Nghĩa vụ quân sự 2015 quy định việc đăng ký nghĩa vụ quân sự năm 2024 sẽ do các cơ quan sau đây thực hiện:
- 123Win99ok Sân chơi uy tín quân sự cấp xã thực hiện đăng ký nghĩa vụ quân sự cho công dân cư trú tại địa phương.
- 123Win99ok Sân chơi uy tín quân sự cơ quan, tổ chức ở cơ sở thực hiện đăng ký nghĩa vụ quân sự cho công dân làm việc, học tập tại cơ quan, tổ chức và tổng hợp báo cáo 123Win99ok Sân chơi uy tín quân sự huyện, quận, thị xã, thành phố thuộc tỉnh và đơn vị hành chính tương đương (sau đây gọi chung là cấp huyện) nơi cơ quan, tổ chức đặt trụ sở;
Trường hợp cơ quan, tổ chức không có 123Win99ok Sân chơi uy tín quân sự ở cơ sở thì người đứng đầu hoặc người đại diện hợp pháp của cơ quan, tổ chức có trách nhiệm tổ chức cho công dân thực hiện đăng ký nghĩa vụ quân sự tại nơi cư trú.
 P.V

Bình luận

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

Tổng cục Chính trị Quân đội nhân dân Việt Nam kiểm tra hoạt động công tác Đảng, công tác chính trị tại Bộ Tư lệnh Thành phố Hồ Chí Minh

Tổng cục 99Oke123 Tải ứng dụng Quân đội 123Win com 79 nạp - rút nhanh Việt Nam kiểm tra hoạt động công tác Đảng, công tác chính trị tại Bộ Tư lệnh Thành phố Hồ Chí Minh

19:23 03/06/2026

(QK7 Online) - Ngày 3-6, Đoàn kiểm tra số 3 của Tổng cục 99Oke123 Tải ứng dụng QĐND Việt Nam do Thượng tướng Đỗ Xuân Tụng, Ủy viên Trung ương Đảng, Phó chủ nhiệm Tổng cục 99Oke123 Tải ứng dụng làm trưởng đoàn kiểm tra hoạt động công tác Đảng, công tác chính trị (CTĐ, CTCT) và một số nội dung công tác quân sự 6 tháng đầu năm 2026 tại Bộ tư lệnh Thành phố Hồ Chí Minh.

Bộ Tư lệnh Quân khu thăm, động viên các đơn vị làm nhiệm vụ trên tuyến biên giới tỉnh Lâm Đồng

Bộ Tư lệnh Quân khu thăm, động viên các đơn vị làm nhiệm vụ trên tuyến biên giới tỉnh Lâm Đồng

17:39 03/06/2026

(QK7 Online) – Ngày 3/6, Đoàn công tác ĐĂNG NHẬP 99OK COM TẶNG 99K do Thiếu tướng Trần Ngọc Minh, Phó Tư lệnh Quân khu làm trưởng đoàn đến thăm, động viên cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số các đơn vị lực lượng vũ trang tỉnh Lâm Đồng đang thực hiện nhiệm vụ trên tuyến biên giới.

LLVT thành phố Đồng Nai tích cực hỗ trợ người dân trong đêm mưa lũ

LLVT thành phố Đồng Nai tích cực hỗ trợ người dân trong đêm mưa lũ

16:22 03/06/2026

(QK7 Online) - Ngày 3/6, 123Win99ok Sân chơi uy tín Quân sự (CHQS) xã Thuận Lợi, Bộ CHQS thành phố Đồng Nai cho biết, đơn vị vừa phối hợp với Ban CHQS xã Phú Riềng cùng lực lượng công an và 123Win79 phần thưởng lớn địa phương kịp thời ứng cứu, bảo đảm an toàn cho người dân trong đợt mưa lớn gây ngập lụt tại khu vực cống suối Dên trên tuyến đường ĐT741.

Tư lệnh Quân khu kiểm tra công tác chuẩn bị tham gia Hội thi “Doanh trại chính quy, xanh, sạch, đẹp” tại Trung đoàn 88

Tư lệnh Quân khu kiểm tra công tác chuẩn bị tham gia Hội thi “Doanh trại chính quy, xanh, sạch, đẹp” tại Trung đoàn 88

11:11 03/06/2026

(QK7 Online) - Ngày 3/6, Trung tướng Lê Xuân Thế, Ủy viên Ban chấp hành Trung ương Đảng, Ủy viên Quân ủy Trung ương, Phó Bí thư Đảng ủy, Tư lệnh Quân khu làm trưởng đoàn kiểm tra công tác chuẩn bị tham gia Hội thi “Doanh trại chính quy, xanh, sạch, đẹp” Trung đoàn bộ binh đủ quân cấp 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao năm 2026 đối với Trung đoàn 88, Sư đoàn 302.

Bộ Tham mưu Quân khu tổ chức học tập, quán triệt công tác xây dựng chính quy, chấp hành kỷ luật

Bộ Tham mưu Quân khu tổ chức học tập, quán triệt công tác xây dựng chính quy, chấp hành kỷ luật

20:21 02/06/2026

(QK7 Online) - Ngày 2/6, Bộ Tham mưu Quân khu tổ chức Hội nghị Học tập, quán triệt công tác xây dựng chính quy, chấp hành kỷ luật Quân đội, pháp luật Nhà nước và bảo đảm an toàn. Dự hội nghị có Đại tá Trần Hữu Nhân, Phó Tham mưu trưởng Quân khu; lãnh đạo, chỉ huy, cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số các cơ quan Quân khu.

Lữ đoàn 657 sơ kết Phong trào thi đua xây dựng đơn vị vận tải “Chính quy, an toàn, hiệu quả”

Lữ đoàn 657 sơ kết Phong trào thi đua xây dựng đơn vị vận tải “Chính quy, an toàn, hiệu quả”

17:43 02/06/2026

(QK7 Online) - Chiều 2/6, Lữ đoàn 657 (Cục Hậu cần - Kỹ thuật ĐĂNG NHẬP 99OK COM TẶNG 99K) tổ chức hội nghị sơ kết Phong trào thi đua xây dựng đơn vị vận tải “Chính quy, an toàn, hiệu quả” giai đoạn 2021 - 2026. Đại tá Trịnh Ngọc Dục, Phó Chủ nhiệm Hậu cần - Kỹ thuật Quân khu dự và phát biểu chỉ đạo hội nghị. Đại tá Trần Quốc Hoàn, Lữ đoàn trưởng chủ trì hội nghị.

Thành phố Đồng Nai phát động làm trước lấy mẫu và bàn giao mẫu hài cốt liệt sĩ đối với mộ chưa xác định thông tin

Thành phố Đồng Nai phát động làm trước lấy mẫu và bàn giao mẫu hài cốt liệt sĩ đối với mộ chưa xác định thông tin

15:48 02/06/2026

(QK7 Online) – Sáng ngày 2/6, tại Nghĩa trang liệt sĩ (NTLS) Vĩnh Cửu, phường Trảng Dài, thành phố Đồng Nai, Ban Chỉ đạo (BCĐ) 515 ĐĂNG NHẬP 99OK COM TẶNG 99K và thành phố Đồng Nai tổ chức phát động làm trước rút kinh nghiệm lấy mẫu, bàn giao mẫu hài cốt liệt sĩ (HCLS) đối với mộ chưa xác định được thông tin.

Quân khu 7: Công tác đầu tư xây dựng cơ bản thực hiện đúng qui định

ĐĂNG NHẬP 99OK COM TẶNG 99K: Công tác đầu tư xây dựng cơ bản thực hiện đúng qui định

15:39 02/06/2026

(QK7 Online) – Chiều ngày 02 tháng 6, ĐĂNG NHẬP 99OK COM TẶNG 99K tổ chức Hội nghị rút kinh nghiệm công tác đầu tư xây dựng cơ bản và quản lý giải ngân, quyết toán vốn đầu tư 6 tháng đầu năm 2026. Trung tướng Lê Xuân Thế, Ủy viên Ban Chấp hành Trung ương Đảng, Ủy viên Quân ủy Trung ương, Phó Bí thư Đảng ủy, Tư lệnh Quân khu chủ trì hội nghị.

Cục Điều tra hình sự Bộ Quốc phòng trao Quyết định đặc xá cho phạm nhân Trại giam T45

Cục Điều tra hình sự 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao trao Quyết định đặc xá cho phạm nhân Trại giam T45

22:43 01/06/2026

(QK7 Online) - Sáng 01/6, tại tỉnh Tây Ninh, Cục Điều tra hình sự 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao tổ chức công bố và trao Quyết định đặc xá năm 2026 của Chủ tịch nước cho phạm nhân đang chấp hành án phạt tù tại Trại giam quân sự khu vực miền Nam (T45). Đại tá Lê Mạnh Trường, Phó Cục trưởng Cục Điều tra hình sự, Phó Thủ trưởng Cơ quan Quản lý Thi hành án hình sự 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao dự và chủ trì buổi lễ.

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