【99OK】 Link vào 99OK Casino mới nhất 2025 ✔️

Link 99OK hot nhất

99OK - Nhà Cái Thể Thao, Nổ Hũ, Bắn Cá Uy Tín

Quân sự địa phương > Lâm Đồng

Thứ bảy, 09/05/2026, 12:46 (GMT+7)
1838 lượt xem

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

(QK7 Online) - Những năm gần đây, tình trạng khai thác thủy sản bất hợp pháp, không khai báo, không theo quy định (IUU) trên biển vẫn diễn biến phức tạp, đòi hỏi giải pháp quản lý chặt chẽ, bền vững và sát thực tế. Từ thực tiễn đó, 123Win79 tỷ lệ kèo World Cup 2026 (BĐBP) tỉnh Lâm Đồng đã triển khai mô hình “Cán bộ, đảng viên phụ trách phương tiện có nguy cơ cao vi phạm”, bước đầu mang lại hiệu quả rõ nét. Cách làm không chỉ quản lý hành chính mà gắn trách nhiệm đến từng cán bộ, phương tiện, nâng cao ý thức chấp hành pháp luật của ngư dân.
“Một cán bộ – một phương tiện”
Điểm xuất phát của mô hình là công tác rà soát, phân loại chính xác các phương tiện có nguy cơ cao vi phạm. Đây thường là những tàu cá có công suất lớn, hoạt động dài ngày trên biển, từng có tiền sử vi phạm hoặc thường xuyên hoạt động gần các vùng ranh giới nhạy cảm. Bên cạnh đó, các yếu tố như điều kiện kinh tế, hoàn cảnh gia đình, trình độ nhận thức pháp luật của chủ tàu, thuyền trưởng cũng được đưa vào đánh giá tổng thể.
Đồn Biên phòng Tân Thành tặng cờ Tổ quốc, áo phao cho ngư dân.
Trên cơ sở đó, từng cán bộ, đảng viên ở các đồn biên phòng được phân công phụ trách cụ thể từng phương tiện. Việc phân công không mang tính hình thức mà gắn với trách nhiệm chính trị rõ ràng. Mỗi cán bộ phải nắm chắc hồ sơ, đặc điểm hoạt động, mối quan hệ xã hội, thậm chí cả tâm tư, nguyện vọng của chủ tàu mà mình phụ trách. Nhờ “định danh đúng đối tượng”, công tác quản lý đã chuyển từ dàn trải sang tập trung, có trọng tâm, trọng điểm.
Cốt lõi của mô hình là nguyên tắc “Một cán bộ – một phương tiện” (hoặc một nhóm phương tiện). Qua đó, thiết lập mối quan hệ trực tiếp, thường xuyên giữa lực lượng chức năng với ngư dân. Không còn là những buổi tuyên truyền chung chung, cán bộ phụ trách trở thành người đồng hành cùng chủ tàu trong suốt quá trình hoạt động. Trước mỗi chuyến ra khơi, họ trực tiếp gặp gỡ, trao đổi, phổ biến quy định pháp luật, phân tích rủi ro khi vi phạm, hướng dẫn cụ thể về ranh giới khai thác, phương thức liên lạc trên biển.
Trong quá trình tàu hoạt động, cán bộ tiếp tục duy trì liên lạc, theo dõi qua hệ thống giám sát hành trình, kịp thời nhắc nhở khi phương tiện có dấu hiệu di chuyển vào khu vực nhạy cảm. Sau mỗi đợt khai thác, việc đánh giá, rút kinh nghiệm cũng được thực hiện nghiêm túc.
Tuyên truyền sát đối tượng, kiểm soát từ sớm
Một điểm nổi bật của mô hình là phương thức tuyên truyền được “cá thể hóa” theo từng đối tượng. Thay vì áp dụng nội dung chung, cán bộ phụ trách lựa chọn cách tiếp cận phù hợp với từng chủ tàu.
Với những người hạn chế về nhận thức pháp luật, cách tuyên truyền được giản lược, dễ hiểu, gắn với tình huống cụ thể. Với các chủ tàu từng vi phạm, nội dung đi sâu phân tích hậu quả pháp lý, thiệt hại kinh tế và ảnh hưởng uy tín cá nhân. Đối với những hộ có hoàn cảnh khó khăn, công tác tuyên truyền được kết hợp với định hướng sinh kế, giúp họ không phải đánh đổi bằng hành vi vi phạm. Chính sự linh hoạt này đã giúp pháp luật không còn khô cứng mà trở nên gần gũi, dễ tiếp nhận, từng bước hình thành ý thức tự giác trong ngư dân.
Các phương tiện khai thác trên biển được BĐBP Lâm Đồng phối hợp theo dõi, giám sát .
Những con số như hơn 398.400 lượt ngư dân được tuyên truyền, hàng trăm lớp tập huấn được tổ chức, 100% phương tiện trong diện quản lý lắp đặt thiết bị giám sát hành trình… đã phản ánh quy mô và hiệu quả của chương trình.
Tại Đồn Biên phòng Cửa khẩu Cảng Phú Quý, công tác tuyên truyền được “đời sống hóa” bằng cách tiếp cận gần dân. Nhiều năm qua, Thượng úy Mai Văn Minh, Đội trưởng Vận động quần chúng không quản ngại khó khăn, thường xuyên đến từng gia đình ngư dân, nhất là các hộ có hoàn cảnh khó khăn để tuyên truyền, vận động.
Anh chia sẻ: “Khi mỗi ngư dân hiểu luật, tôn trọng luật và biết tự bảo vệ mình thì công tác quản lý sẽ nhẹ nhàng, hiệu quả hơn. Ngư dân đã chuyển từ bị động sang chủ động, từ né tránh sang tự giác chấp hành”.
Không dừng lại ở tuyên truyền, mô hình còn phát huy hiệu quả trong kiểm soát, ngăn ngừa vi phạm từ sớm, từ xa. Thông qua giám sát hành trình và mạng lưới tổ tàu thuyền tự quản, cán bộ phụ trách có thể phát hiện kịp thời những dấu hiệu bất thường như tàu đi lệch hướng, tăng tốc về phía ranh giới hoặc mất tín hiệu thiết bị.Trong nhiều trường hợp, chỉ một cuộc gọi kịp thời đã giúp phương tiện điều chỉnh hướng đi, tránh nguy cơ vi phạm. Cơ chế này đánh dấu bước chuyển quan trọng từ “xử lý vi phạm” sang “phòng ngừa vi phạm”.
Giá trị lớn nhất của mô hình không chỉ nằm ở việc giảm vi phạm mà còn ở việc xây dựng niềm tin giữa lực lượng BĐBP và ngư dân. Khi cán bộ thực sự gần dân, hiểu dân và chia sẻ khó khăn, các quy định pháp luật không còn là rào cản mà trở thành điểm tựa.
Ngư dân sẵn sàng hợp tác, chủ động cung cấp thông tin, thậm chí nhắc nhở lẫn nhau trong cộng đồng. Thực tiễn cho thấy, số vụ vi phạm vùng biển nước ngoài đã giảm rõ rệt. Nhiều phương tiện từng nằm trong diện nguy cơ cao nay đã chấp hành nghiêm quy định, hoạt động đúng ngư trường cho phép. Quan trọng hơn, mô hình tạo ra sự chuyển biến về nhận thức, ngư dân hiểu rõ hơn về pháp luật, về chủ quyền quốc gia và trách nhiệm của mình. Đó cũng chính là nền tảng quan trọng để giữ tàu cá không “đi lạc”, góp phần bảo vệ chủ quyền biển, đảo từ sớm, từ xa bằng chính ý thức và hành động của ngư dân.
Văn Hoàn

Bình luận

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

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

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

17:00 04/05/2026

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

Đổi mới phương thức, nâng cao chất lượng công tác tuyên truyền

Đổi mới phương thức, nâng cao chất lượng công tác tuyên truyền

15:34 23/04/2026

(QK7 Online) - Trong 2 ngày 21 và 22/4, Ban chỉ huy 123Win79 tỷ lệ kèo World Cup 2026 (BĐBP) tỉnh Lâm Đồng tổ chức Hội thi Báo cáo viên giỏi năm 2026. Tham gia hội thi có 51 thí sinh đại diện cho 28 tổ chức Đảng trong 123 Win 88ok trang chủ chính thức Ban chỉ huy BĐBP tỉnh. Đây là lực lượng nòng cốt, trực tiếp triển khai công tác tuyên truyền, giáo dục chính trị tại cơ sở.

Bộ CHQS tỉnh Lâm Đồng gặp mặt gia đình chiến sĩ mới

Bộ CHQS tỉnh Lâm Đồng gặp mặt gia đình 123Win com 79 casino, cá cược thể thao đến xổ số mới

16:38 19/04/2026

(QK7 Online) - Ngày 18/4, Bộ CHQS tỉnh Lâm Đồng chỉ đạo các đơn vị tổ chức gặp mặt cấp ủy, Trang game 123win đã chính thức đổi tên thành 99Ok vào ngày 10 Tháng 2 Năm 2025 địa phương và thân nhân gia đình 123Win com 79 casino, cá cược thể thao đến xổ số mới nhập ngũ năm 2026. Thiếu tướng Đinh Hồng Tiếng, Chỉ huy trưởng Bộ CHQS tỉnh dự gặp mặt tại Trung đoàn 994A; Đại tá Nguyễn Văn Sơn, Chính ủy Bộ CHQS tỉnh dự gặp mặt tại Trung đoàn 994B; Đại tá Nguyễn Thanh Quảng, Phó Chính ủy Bộ CHQS tỉnh dự gặp mặt tại Trung đoàn 812.

Quân khu kiểm tra việc thực hiện quyết định tổ chức lại Ban Chỉ huy quân sự cấp xã tại tỉnh Lâm Đồng

Quân khu kiểm tra việc thực hiện quyết định tổ chức lại 123Win99ok Sân chơi uy tín quân sự cấp xã tại tỉnh Lâm Đồng

23:05 18/04/2026

(QK7 Online) - Ngày 18/4, đoàn công tác ĐĂNG NHẬP 99OK COM TẶNG 99K do Đại tá Nguyễn Văn Lộc, Phó Chủ nhiệm 99Oke123 Tải ứng dụng Quân khu làm trưởng đoàn đã đến kiểm tra việc thực hiện quyết định tổ chức lại 123Win99ok Sân chơi uy tín quân sự (CHQS) cấp xã tại tỉnh Lâm Đồng. Tham gia đoàn có Thủ trưởng Bộ CHQS tỉnh Lâm Đồng.

Bộ CHQS tỉnh Lâm Đồng kiểm tra thực hiện quy chế dân chủ tại Ban Chỉ huy Phòng thủ khu vực 5 - Phan Thiết

Bộ CHQS tỉnh Lâm Đồng kiểm tra thực hiện quy chế dân chủ tại 123Win99ok Sân chơi uy tín 99Ok 123Win phiên bản mới khu vực 5 - Phan Thiết

21:15 17/04/2026

(QK7 Online) - Ngày 17/4, Bộ Chỉ huy Quân sự (CHQS) tỉnh Lâm Đồng tổ chức kiểm tra việc thực hiện Quy chế dân chủ ở cơ sở và đối thoại dân chủ với cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số 123Win99ok Sân chơi uy tín 99Ok 123Win phiên bản mới khu vực (CHPTKV) 5 - Phan Thiết. Đại tá Nguyễn Thanh Quảng, Phó Chính ủy Bộ CHQS tỉnh chủ trì kiểm tra.

LLVT tỉnh Lâm Đồng giúp dân khắc phục hậu quả giông lốc

LLVT tỉnh Lâm Đồng giúp dân khắc phục hậu quả giông lốc

10:52 09/04/2026

(QK7 Online) - Ngày 9/4, thông tin từ Bộ CHQS tỉnh Lâm Đồng, lực lượng vũ trang (LLVT) tỉnh đã và đang tích cực phối hợp với các lực lượng chức năng, cấp ủy, Trang game 123win đã chính thức đổi tên thành 99Ok vào ngày 10 Tháng 2 Năm 2025 địa phương khẩn trương khắc phục hậu quả giông lốc xảy ra tại phường Bắc Gia Nghĩa, xã Nhân Cơ, phường 1 Bảo Lộc và phường 2 Bảo Lộc.

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