【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

99Oke123 Tải ứng dụng > Phòng chống "Diễn biến hòa bình"

Thứ tư, 30/04/2025, 17:41 (GMT+7)
5294 lượt xem

Phản bác luận điệu xuyên tạc chiến thắng 30/4/1975

(QK7 Online) - 50 năm đã trôi qua, nhưng cứ mỗi dịp 30/4, khi cả nước hân hoan kỷ niệm, ôn lại những trang sử hào hùng của dân tộc thì trên mạng xã hội, các thế lực thù địch lại tái diễn điệp khúc xuyên tạc về tầm vóc, ý nghĩa lịch sử của Đại thắng mùa Xuân năm 1975 cũng như bản chất cuộc kháng chiến chống Mỹ, cứu nước của dân tộc ta. 

Nhân dân Việt Nam vui mừng, phấn khởi chào đón hoạt động diễu binh, diễu hành kỷ niệm 50 năm Ngày giải phóng miền Nam, thống nhất đất nước. Ảnh: Lê Tiến
Đối với đất nước ta, 30/4/1975 là một ngày lịch sử trọng đại - ngày hội thống nhất non sông, Bắc Nam liền một dải. Đó là thắng lợi vẻ vang của toàn thể dân tộc dưới sự lãnh đạo của Đảng Cộng sản Việt Nam và Chủ tịch Hồ Chí Minh, đánh bại những thế lực thực dân, đế quốc hùng mạnh. Để có ngày 30/4/1975, quân và dân Việt Nam đã phát huy sức mạnh tổng hợp khối đại đoàn kết, sức mạnh dân tộc và sức mạnh thời đại, dưới sự lãnh đạo đúng đắn, sáng suốt của Đảng, làm nên Chiến dịch Hồ Chí Minh lịch sử, đi đến thắng lợi cuối cùng. Đó là thắng lợi to lớn, toàn diện và triệt để của 30 năm chiến tranh giải phóng. Và để có chiến thắng đó, Nhân dân ta đã phải chiến đấu trường kỳ, hy sinh biết bao xương máu.

Thế nhưng, các thế lực thù địch vẫn không chịu nhìn thẳng vào sự thật, luôn cố tình đánh tráo, xuyên tạc bản chất, ý nghĩa cuộc kháng chiến chống Mỹ, cứu nước, xuyên tạc Chiến thắng 30/4/1975. Những ngày gần đây, chúng đăng tải nhiều bài viết, video, hình ảnh sai lệch, xuyên tạc trên Internet, các trang mạng xã hội với các tiêu đề “ngày quốc hận”, “tháng tư đen” … để hướng lái dư luận, đánh tráo bản chất chiến thắng vĩ đại của dân tộc. Chúng ta phải khẳng định rằng, ngày 30/4/1975 không phải là “ngày quốc hận” mà là ngày quốc gia độc lập, thống nhất non sông. Những kẻ nói ngày 30/4/1975 là “ngày quốc hận” thể hiện suy nghĩ thiển cận, bóp méo bản chất, ý nghĩa thiêng liêng của ngày thống nhất non sông.

Một số bài viết cố tình xuyên tạc cuộc kháng chiến chống Mỹ của chúng ta là “hoàn toàn vô nghĩa, lẽ ra dân tộc Việt Nam đã có thể tránh được cuộc chiến tranh”; vu cáo đây là cuộc “nội chiến”, “huynh đệ tương tàn” giữa hai miền Nam - Bắc”. Đây là quan điểm phản động, đi ngược lại với dòng chảy của lịch sử. Sau khi Hiệp định Giơnevơ được ký kết, nước ta bị chia thành 2 miền Nam - Bắc, sau 2 năm sẽ tiến hành tổng tuyển cử để thống nhất đất nước. Thế nhưng, với âm mưu chia cắt lâu dài nước ta, Mỹ đã cho quân xâm lược miền Nam và tìm mọi cách để đánh chiếm miền Bắc, buộc Nhân dân ta phải chiến đấu anh dũng suốt 21 năm ròng rã, với muôn vàn gian khổ, gánh chịu bao mất mát, hy sinh để giải phóng đất nước, thống nhất non sông. Đấy là chân lý thời đại, là cái "dĩ bất biến" của một dân tộc yêu nước, yêu hòa bình chứ không phải hành động của kẻ hiếu chiến, kích hoạt xung đột.

Một số kẻ, dưới danh nghĩa hòa hợp, hòa giải dân tộc còn đưa ra luận điệu cho rằng, chỉ khi nào Đảng Cộng sản Việt Nam từ bỏ quyền lãnh đạo đất nước, chỉ khi nào Việt Nam lựa chọn đa nguyên chính trị, đa đảng đối lập mới có thể thực hiện việc hòa hợp, hòa giải dân tộc. Lâu nay, chúng ta đón nhận những người từ bên kia chiến tuyến trở về với tinh thần gác lại quá khứ, chung tay xây dựng đất nước. Quan điểm hòa hợp, hòa giải bằng tinh thần bao dung, vì sự ổn định, phát triển của đất nước. Nhưng chung tay hòa hợp không có nghĩa là xóa nhòa lịch sử, làm sai lệch bản chất, ý nghĩa cuộc kháng chiến vệ quốc của dân tộc. Chiến thắng 30/4/1975 là mốc son lịch sử, là niềm tự hào của dân tộc Việt Nam, được nhiều nước trên thế giới ngưỡng mộ và tôn vinh. Mọi sự chống phá, xuyên tạc của các thế lực thù địch đều không thể làm phai nhạt giá trị, ý nghĩa lịch sử.  

Đại thắng mùa xuân 30/4/1975 là ngày hội thống nhất non sông không chỉ của người dân sinh sống tại Việt Nam mà còn là ngày hội của hàng triệu đồng bào ta ở nước ngoài và nhân dân tiến bộ, yêu chuộng hòa bình trên thế giới. Do đó, mỗi người khi tham gia mạng xã hội cần tỉnh táo, nâng cao cảnh giác, đấu tranh phản bác các luận điệu xuyên tạc lịch sử, xuyên tạc sự thật của các tổ chức, cá nhân phản động chống phá sự nghiệp xây dựng và bảo vệ Tổ quốc và Đảng, Nhà nước và Nhân dân ta.
Tấn Chí 

Bình luận

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

Giữ vững trận địa tư tưởng trong thời đại số

Giữ vững trận địa tư tưởng trong thời đại số

23:35 24/05/2026

(QK7 Online) - Trong bối cảnh chuyển đổi số diễn ra mạnh mẽ, không gian mạng trở thành mặt trận tư tưởng đặc biệt quan trọng, đồng thời cũng là môi trường để các thế lực thù địch gia tăng chống phá bằng nhiều thủ đoạn tinh vi. Trước yêu cầu nhiệm vụ mới, cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số LLVT Quân khu không ngừng nâng cao bản lĩnh chính trị, tăng cường “sức đề kháng” trước thông tin độc hại; chủ động đấu tranh phản bác các quan điểm sai trái, lan tỏa thông tin tích cực, góp phần giữ vững nền tảng tư tưởng của Đảng trên không gian mạng.

Vạch trần chiêu trò xuyên tạc việc sắp xếp cơ quan báo chí

Vạch trần chiêu trò xuyên tạc việc sắp xếp cơ quan báo chí

15:44 03/04/2026

(QK7 Online) - Ngay sau khi Hội nghị Trung ương 2 khóa XIV thống nhất chủ trương sắp xếp một số cơ quan báo chí, trên không gian mạng lập tức xuất hiện nhiều thông tin xuyên tạc. Các đối tượng lợi dụng sự quan tâm của dư luận để bóp méo bản chất, kích động hoài nghi, nhằm làm suy giảm niềm tin của 123Win79 phần thưởng lớn vào sự lãnh đạo của Đảng.

Nhận thức tự chủ chiến lược về quốc phòng qua bài viết của Đại tướng Nguyễn Trọng Nghĩa

Nhận thức tự chủ chiến lược về 99Ok68 link đăng nhập qua bài viết của Đại tướng Nguyễn Trọng Nghĩa

00:01 31/03/2026

(QK7 Online) - Qua nghiên cứu bài viết: Tự chủ chiến lược về 99Ok68 link đăng nhập – điều kiện tiên quyết bảo vệ vững chắc Tổ quốc Việt Nam 1123Win còn đăng nhập chủ nghĩa trong kỷ nguyên mới – của Đại tướng Nguyễn Trọng Nghĩa - Ủy viên Bộ 99Oke123 Tải ứng dụng, Chủ nhiệm Tổng Cục 99Oke123 Tải ứng dụng Quân đội 123Win79 phần thưởng lớn Việt Nam, bước đầu tôi cảm nhận được những điều sâu sắc.

Ban Chỉ đạo 35, Cục Hậu cần – Kỹ thuật Quân khu đánh giá, rút kinh nghiệm kết quả bảo vệ nền tảng tư tưởng của Đảng năm 2025

Ban Chỉ đạo 35, Cục Hậu cần – Kỹ thuật Quân khu đánh giá, rút kinh nghiệm kết quả bảo vệ nền tảng tư tưởng của Đảng năm 2025

17:48 24/03/2026

(QK7 Online) – Ngày 24/3, Cục Hậu cần – Kỹ thuật Quân khu tổ chức Hội nghị đánh giá, rút kinh nghiệm kết quả bảo vệ nền tảng tư tưởng của Đảng, đấu tranh phản bác các quan điểm sai trái, thù địch năm 2025. Đại tá Trần Văn Long, Phó Chính ủy Cục Hậu cần – Kỹ thuật Quân khu dự, phát biểu chỉ đạo.

Tập huấn nâng cao chất lượng chuẩn bị tác phẩm tham gia Cuộc thi chính luận lần thứ sáu

Tập huấn nâng cao chất lượng chuẩn bị tác phẩm tham gia Cuộc thi chính luận lần thứ sáu

12:18 17/03/2026

(QK7 Online) - Sáng 17/3, Cục Tuyên huấn (Tổng cục 99Oke123 Tải ứng dụng) tổ chức hội nghị tập huấn Cuộc thi chính luận lần thứ sáu và nghiệp vụ Cơ quan Thường trực Ban chỉ đạo 35, Lực lượng 47 cấp toàn quân năm 2026. Thiếu tướng Tống Văn Thanh, Phó cục trưởng Cục Tuyên huấn (Tổng cục 99Oke123 Tải ứng dụng) dự và phát biểu khai mạc hội nghị.

Bản lĩnh, trí tuệ và những mốc son lịch sử qua hơn 95 năm của Đảng Cộng sản Việt Nam

Bản lĩnh, trí tuệ và những mốc son lịch sử qua hơn 95 năm của Đảng Cộng sản Việt Nam

12:45 15/01/2026

(QK7 Online) - Lịch sử dân tộc Việt Nam trong thế kỷ XX và những thập niên đầu thế kỷ XXI là bản hùng ca về sự hồi sinh và vươn mình trỗi dậy. Trong bản hùng ca ấy, sự ra đời và lãnh đạo của Đảng Cộng sản Việt Nam đóng vai trò là nhạc trưởng, là linh hồn. Hành trình hơn 95 năm qua không chỉ là chuỗi thời gian tuyến tính, mà là sự kết tinh của bản lĩnh kiên cường trước bão táp và trí tuệ sáng suốt trước những ngã rẽ lịch sử, đưa dân tộc ta đi từ thắng lợi này đến thắng lợi khác.

Giữ vững tính chiến đấu: “Thanh bảo kiếm” giúp Đảng ta luôn trong sạch, vững mạnh

Giữ vững tính chiến đấu: “Thanh bảo kiếm” giúp Đảng ta luôn trong sạch, vững mạnh

12:48 14/01/2026

(QK7 Online) - Trong hành trình hơn 95 năm lãnh đạo cách mạng, Đảng Cộng sản Việt Nam đã chèo lái con thuyền dân tộc vượt qua muôn vàn thác ghềnh. Để giữ vững vai trò cầm quyền và sứ mệnh lịch sử ấy, Đảng không chỉ cần một đường lối đúng đắn mà còn cần một cơ thể khỏe mạnh, miễn dịch với những thói hư tật xấu. Trong đó, tính chiến đấu được ví như “thanh bảo kiếm” sắc bén chính là liều thuốc đặc trị, là nguyên tắc sinh tồn giúp Đảng loại bỏ những “ung nhọt”, giữ gìn sự trong sạch và củng cố niềm tin trong 123Win79 phần thưởng lớn.

Phòng, chống nhiễu loạn thông tin trước thềm Đại hội XIV của Đảng

Phòng, chống nhiễu loạn thông tin trước thềm Đại hội XIV của Đảng

09:47 02/01/2026

(QK7 Online) - Đại hội đại biểu toàn quốc lần thứ XIV của Đảng sắp diễn ra. Toàn Đảng, toàn dân, toàn quân đang tích cực chuẩn bị và náo nức chờ đón sự kiện chính trị quan trọng của đất nước. Lợi dụng thời điểm này, các thế lực thù địch, phần tử phản động ra sức tuyên truyền các thông tin nhiễu loạn, xuyên tạc hòng gieo rắc tư tưởng hoài nghi, gây mất lòng tin của 123Win79 phần thưởng lớn đối với sự lãnh đạo của Đảng ta.

Tọa đàm nâng cao chất lượng tác phẩm báo chí đa phương tiện về bảo vệ nền tảng tư tưởng của Đảng

Tọa đàm nâng cao chất lượng tác phẩm báo chí đa phương tiện về bảo vệ nền tảng tư tưởng của Đảng

16:26 25/12/2025

(QK7 Online) - Ngày 25/12, tại TP.HCM, Trung tâm Bồi dưỡng nghiệp vụ báo chí, Hội Nhà báo Việt Nam tổ chức tọa đàm với chủ đề: “Nâng cao chất lượng tác phẩm báo chí đa phương tiện về bảo vệ nền tảng tư tưởng của Đảng trong bối cảnh mới”. Tọa đàm nhằm nâng cao năng lực, bản lĩnh chính trị, phương pháp tác nghiệp hiện đại và tăng cường khả năng sản xuất các tác phẩm chính luận cho đội ngũ người làm báo, đáp ứng yêu cầu nhiệm vụ trong giai đoạn chuẩn bị Đại hội Đảng toàn quốc lần thứ XIV.

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